qual seria as melhorias do jsf 1.2?? quais as diferencas entre eles?? existe muitas???
só a ausência de vários bugs existentes da RI do JSF 1.1 já é muito bom!!! Unificação da EL do JSF com a do JSP ( + JSTL) sairam algumas classes em detrimento de outras, etc…
Isso já ajudou bastante!!!
pode até ser, mas a versão do jsf 1.2 me deu bastante dor de cabeça com várias coisas, principalmente aquelas mensagens de validação, é uma tristeza
Como assim? Leozin?
Quais problemas com mensagens vcs tiveram ?
Estou tendo problemas com essas mensagens de validação… Poderiam me dizer como solucionaram o problema ?
[]'s Luís César
bom, vou reltar os problemas que tive que achei um tanto quanto chatos
um problema sério do JSF 1.2 é no que se diz respeito aos labels
por exemplo, digamos que você crie um label
<h:outputLabel for="txtNome" value="Nome do Produto" />
<h:inputText id="txtNome" required="true" />
<h:messages />
O que acontece quando você submete o form sem estar preenchido?
1- a mensagem vem num formato “bem chato”. Se não me engano, o replaceIdWithLabel nem funciona direito
2- Outra é que SEMPRE aparece o nome do form na frente, SEMPRE
3- label pra que?
4- a unica forma de corrigir isso é fazendo o seguinte:
<h:inputText id="txtNome" required="true" [b]label="Nome do Produto"[/b]/>
No JSF 1.1 não tem nenhum problema desses, e o melhor, quando você usa o tomahawk funciona legal
outra coisa que também não gostei é os ids que ele gera no html quando você não especifica no faces
por exemplo, um form qualquer aqui gerado pelo jsf 1.2
<form id="j_id_jsp_2103094044_3" name=""j_id_jsp_2103094044_3">...</form>
e no jsf 1.1
<form id="_id0" name="_id0">...</form>
Qual o problema nisso?
Digamos que dá uma exception, você errou um EL da vida. A mensagem de erro no jsf 1.2 vai ser pra dar risada, do tipo
Continuando
O tal do JSTL unificado, sinceramente, é um mito. Sem contar que no faces você nem precisa usar jstl JSTL ajuda o pessoal do faces que está iniciando só, que veio de outros frameworks que usam o jstl
Com ajax4jsf
Se você cria um botão, h:commandButton e quer fazer com que ele seja ajax-enabled, adivinha? NÃO É POSSÍVEL
A única forma de isso acontecer é se você colocar um botão do myfaces, o t:commandButton
-> Como criar um botão ajaxenabled
Como todos sabem, um botão de um formulário HTML geralmente, ou é um reset ou é um submit. Quando isso vem do Faces, é a mesma idéia. Mas quando queremos deixá-lo ajax-enabled, ele não deve ser um botão de submit (porque não queremos enviar o fomulário inteiro e dar um refresh na página) e nem um botão de reset (porque não queremos limpar os campos do formulário). O que fazer? colocar o type dele como “button”. Dessa forma, o botão não faz nada. Aí você poderia colocar um “onclick” e chamar por ajax.
Mas não sei porque diabos MESMO colocando a propriedade type=“button” ele faz um submit. E o pior: Ele faz o submit e a tua chamada ajax, exemplificando melhor em códigos:
<h:commandButton type="button" value="Validar!">
<a4j:support event="onclick" actionListener="#{meuBean.validarProduto}" />
</h:commandButton>
No JSF 1.2, ele faz submit (o que não deveria ser feito), no JSF 1.1, ele funciona perfeitamente como deveria funcional, tal como o código abaixo
<t:commandButton type="button" value="Validar!">
<a4j:support event="onclick" actionListener="#{meuBean.validarProduto}" />
</t:commandButton>
Mas há algumas vantagens no JSF 1.2, por exemplo, não há necessidade de ficar fazendo <f:verbatim>
E as outras vantagens é que… ahm… bom… sei lá
Eu comecei a usar o JSF 1.2 faz uns 4 meses… Sempre usei MyFaces (por mais de 1 ano), agora é RI 1.2 + tomahawk e, tirando esses problemas, ou seja, essas diferenças que notei, o resto tá legal Isso tudo é “contornável” hehehe
Fala Leozin.
Quanto aos labels, não acho esta implementação ruim.
Fazer isto
<h:inputText id="txtNome" required="true" label="Nome do Produto"/>
é bem mais simples do que <h:outputLabel for="txtNome" value="Nome do Produto" />
<h:inputText id="txtNome" required="true" />
Certo?
Quanto aos ids, tbm acho que é um porcaria o jeito que ele gera, mas como dizem as boas práticas, sempre devemos definir estes ids manualmente.
O JSTL praticamente não usei com JSF, então não estou muito fluente nesta integração. :roll:
AJAX… esse é chatinho.
No mundo perfeito, a integração do Ajax4JSF é ótima, mas quando vc começa a ter rotinas mais complicadas, acaba precisando dar muitas voltar pra fazer um coisa “simples”.
Acho que MUITA coisa do MyFaces ajuda o desenvolvedor. Me parece que algumas coisas que são óbvias só são simples de se implementar com o Tomahawk.
Por exemplo:
t:dataTable - Possui sort e algumas outras funções agregadas como a paginação.
t:saveState - Salva a vida junto com ajax4jsf
Apesar de tudo, gostou muito e ainda é meu framework preferido, mas como disse, me parece que algumas coisas obvias não são tão óbvias para os desenvolvedores da especificação. :!:
mas cara, esse esquema do label… hmmm na verdade ficou legal, mas mesmo assim sei lá
se analisarmos realmente é melhor, porque evita com que haja vários labels pra um componente só
mas eh q assim, o problema que eu digo é esse do label, que nas mensagens ele aparece sempre com o nome do form na frente, SEMPRE! a única forma sabe qual é? É fazer um <t:inputText forceId="true" />
daí funciona
Sem sombra de dúvidas, pra mim também é o framework mais legal, é o meu preferido em tudo… produção, facilidade e afins, não tem comparação!!!11
tanto é que se você ver os meus posts, pode perceber que eu geralmente só respondo questões de JSF, porque é o framework que eu trabalho a mais de 1 ano e meio e me considero um quase-especialista, gosto mesmo dele e acho que tem tudo pra dar certo
ainda vejo muitos problemas nele, mas no geral pra mim é o melhor. Tomahawk é a salvação de MUITAS coisas no JSF, muitas coisas que ficaram faltando o JSF implementou, e o a4j com o rich faces é o melhor complemento do faces
longa vida ao jsf ;D
Ps.: não quero dizer que eu odeio struts, menta, vraptor, struts 2 ou webwork. O JSF é o meu preferido, mas eu gosto do desafio que qualquer outro framework me proporciona
Ps2.: mas uma coisa que nunca abro mão é do meu parceirão, o Spring rsrs até em aplicações desktop ele tá lá me ajudando ;D