Dúvida: MyFaces e Facelets

12 respostas
maurenginaldo

Oi pessoal,

estamos em um processo de definição na empresa onde trabalho. Estamos escolhendo algum framework para trabalhar. Pesquisei bastante sobre o Struts e o Jsf e a estamos bem voltados para o Jsf.

Vi em muitos artigos alguns frameworks para apoio a parte de template, layout e queria que vocês me ajudassem a entender:

O MyFaces é concorrente do Facelets?
Posso utilizar os dois juntos?
Qual é o melhor?

Li na Java Magazine nº 48, na matéria “Jsf: Presente e Futuro”, que descreve uma entrevista com Ed Burns, que provavelmente na distribuição do Jsf 2.0, terá uma implementação de templating baseada em Facelets. O que vocês tem a dizer?

Vamos discutir a respeito.

Obrigado,
Mauren Ginaldo Souza

12 Respostas

D

maurenginaldo:
Oi pessoal,

estamos em um processo de definição na empresa onde trabalho. Estamos escolhendo algum framework para trabalhar. Pesquisei bastante sobre o Struts e o Jsf e a estamos bem voltados para o Jsf.

Vi em muitos artigos alguns frameworks para apoio a parte de template, layout e queria que vocês me ajudassem a entender:

O MyFaces é concorrente do Facelets?
Posso utilizar os dois juntos?
Qual é o melhor?

Li na Java Magazine nº 48, na matéria “Jsf: Presente e Futuro”, que descreve uma entrevista com Ed Burns, que provavelmente na distribuição do Jsf 2.0, terá uma implementação de templating baseada em Facelets. O que vocês tem a dizer?

Vamos discutir a respeito.

Obrigado,
Mauren Ginaldo Souza

Facelets é uma ferramente de template, deve ser usada em conjunto com MyFaces(Impl. JSF). É muito boa, melhor que anexar o Tiles do Struts!!! Vai acabar saindo um frankenstein!!!(Particulamento acho JSF um)

JSF, presente e futuro… A propagando é algo formidavel… Como a Sun, pode injetar algo na cabeça das pessoas… EJB 2.0 era algo maravilhoso!!!
Tenta analizar o Struts 2, vale a pena…

maurenginaldo

Obrigado pela ajuda dders.

E com relação as implementações de template, qual a mais indicada?

Facelets, jsfTemplating, tiles?

Obrigado,

muriloagu

Olá maurenginaldo, qual frame vcs escolheram struts 2 ou JSF estou com este mesmo problema hj … se puder enumerar os motivos tb agradeceria … vcs estao usando tb Templates??? facelets ou tiles??/

valeu

knik

Claro, cada um vai defender aquilo que mais sabe fazer.

Mas veja, JSF é a tendência hoje e irá, sem dúvidas, substituir o Struts a bem curto prazo. Não digo “substituir”, na realidade muita gente está deixando o Struts e passando a utilizar o JSF, eu mesmo sou um deles.

Mas por que isto?

  • O JSF possui um estilo de programação bem próximo da programação para Desktop (como era no Delphi, antigamente) - e isto é o sonho de todo programador java.
  • O JSF é mais fácil (muito mais fácil).
  • O JSF é uma especificação da SUN, ao contrário do Struts.
  • etc.

Bem, mas existem aqueles que insistem em dizer: O JSF tem bugs… blá-blá-blá.
Quem diz isto não sabe usar a ferramenta.

O Facelets é a melhor ferramenta de templates que eu conheço, e foi feito para para o JSF.

Vale a pena investir nisto - é a tendência atual, que revigora a a cada dia.

Abraços.

muriloagu

knik … valeu d++ eu cheguei a testar os dois JSF e STRUTS 2 … estou investindo mais em JSF mas acho legal saber um poukinho dos dois …

já estou fz o download do myfaces … :lol:

Abraço :idea:

D

Ola pessoal.

Estou com problemas na utilizacao do JSF + Facelet + Template + Javascript.

O Erro:

Error Parsing /pages/inputname.xhtml: Error Traced[line: 35] The content of elements must consist of well-formed character data or markup.

O código:

<f:loadBundle basename="resources" var="msg" />

	<ui:composition template="/templates/common.xhtml">
					
		<ui:define name="pageTitle">JSF 1.2 and Facelets under Tomcat. KickStart Application</ui:define>

		<ui:define name="pageHeader">JSF 1.2 Hello Application</ui:define>

		<ui:define name="body">
			<h:message showSummary="true" showDetail="false" style="color: red; font-weight: bold;" for="name" />
			<form jsfc="h:form" id="helloForm">
${msg.prompt}
				<input label="Name" jsfc="h:inputText" required="true" id="name" value="#{person.name}" />
				<input  type="submit" jsfc="h:commandButton" id="submit"
					action="greeting" value="Say Hello" onclick="return teste('11111111');"/>
			</form>
			
		</ui:define>
	</ui:composition>

Ou seja, problemas com javascript com templates. Uso este mesmo codigo em outro exemplo sem template s e funciona.

Alguem poderia me ajudar. Preciso criptografar essa senha no cliente antes de enviar para o servidor.

muriloagu

só pra melhorar o codigo … agora vou ler direitinho 8)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jstl/core">

<f:loadBundle basename="resources" var="msg" />

<ui:composition template="/templates/common.xhtml">

<ui:define name="pageTitle">JSF 1.2 and Facelets under Tomcat. KickStart Application</ui:define>

<ui:define name="pageHeader">JSF 1.2 Hello Application</ui:define>

<ui:define name="body">
<h:message showSummary="true" showDetail="false" style="color: red; font-weight: bold;" for="name" />
<form jsfc="h:form" id="helloForm">
<script type="text/javascript">
function teste(){
var senha = criptografa('11111111');
alert('Senha: '+senha);
}
function criptografa(valor) {
var retorno = '';
var tamanho = valor.length;
var complemento = '';

alert(retorno);
if (tamanho > 0) {
retorno = valor;

//deixa o tamanho da senha com 30 caracteres
var div = 30/tamanho;
for (i = 0; i < div; i++) { <----- Linha 35
retorno+=valor;
}
//adiciona o tamanho da senha ao seu in?cio
if (tamanho < 10) {
retorno = '0'+tamanho+retorno;
} else {
retorno = tamanho+retorno;
}

//criptografa a senha
var resto = 30%tamanho;

if (resto > 0) {
complemento = valor.substring(0, resto);
}
retorno+=complemento;

for (i = 0; i < 32; i++) {
var caracter = retorno.charCodeAt(i);
var valorCaracter = parseInt(caracter);
var resultado = valorCaracter ^ (191+i);
var novoCaracter = String.fromCharCode(resultado);
retorno = retorno.substring(0, i)+novoCaracter+
retorno.substring(i+1, 32);
}
}
alert(retorno);
return retorno;
}//criptografa
</script>
${msg.prompt}
<input label="Name" jsfc="h:inputText" required="true" id="name" value="#{person.name}" />
<input type="submit" jsfc="h:commandButton" id="submit"
action="greeting" value="Say Hello" onclick="return teste('11111111');"/>
</form>

</ui:define>
</ui:composition>
</html>
muriloagu

bom … aki não rolou tb … eu colocaria a senha no banco com md5 e faria isso dentro de um manage bean … facilitaria d++ e é tranquilo
mas vou fuçar mais nessa js

D

Que meleca.

Ja estou desistindo desse facelets, e passando a usar a4j:include..../, que funciona bonitinho.

Obrigado por responder.

J

o problema ali é que você está usando xhtml… logo seu código tem que ser um XML válido…
por causa do <, ocorre o problema já que < é o símbolo usado para iniciar uma tag XML…
o jeito de resolver seria colocar o seu javascript dentro de um sessão CDATA:

rponte

Tiles não foi desenvolvido para trabalhar com o ciclo de vida do JSF, assim como Sitemesh -que na minha opinião é melhor que Tiles- também não foi. Mesmo que os dois funcionem com JSF uma hora você terá problemas realmente chatos devido a isso. Vá de Facelets, hoje em dia ele é a melhor solução para templating com JSF.

Abraços.

D

jukkinha:
o problema ali é que você está usando xhtml… logo seu código tem que ser um XML válido…
por causa do <, ocorre o problema já que < é o símbolo usado para iniciar uma tag XML…
o jeito de resolver seria colocar o seu javascript dentro de um sessão CDATA:

Ai Jukkinha, valeu pela dica.

Essa eu não sabia.
Só uma correção: quando coloquei essa tag, deixou de dar erro nos sinais < e & mas só que o javascript deixou de funcionar. Ai dei uma pesquisada na net sobre esta tag e descobri que estava faltando comentar essa tag, Assim:

[color=red]//[/color] Depois disso o javascript voltou a funcionar. Muito obrigado.
Criado 28 de julho de 2007
Ultima resposta 15 de mai. de 2008
Respostas 12
Participantes 7