[RESOLVIDO] FacesMessages não aparecem mesmo depois de retirar Prettyfaces

7 respostas
L

E ai pessoal, blz?

Seguinte, na empresa onde trabalho estamos desenvolvendo um projeto web JPA + Primefaces 3.2 + Jsf 2.0;

Já em fase de conclusão, foi solicitado a reescrita das Url’s para serem mais amigávei. Pesquisei e acabei por
adotar a Prettyfaces.

Entretanto, não resolveu o problema que nós tinhamos e ainda fez o upload parar de funcionar, dentre o outrar coisas.

Dentre elas, as mensagens do FacesMessages pararam de ser exibidas ao se usar o ajax = false nos botões/links.
Até aí tudo bem, pois sabia que ao invés de reencaminhar, a biblioteca utilizava do redirecionamento para reescrever a URL.

Aí, tirei a biblioteca, limpei as referências para a mesma e NADA! O JSF não voltou ao seu padrão que é reencaminhar e não direcionar!
Com isso nada das minhas FacesMessages aparecerem!

Já fiz de tudo, criei um novo projeto, reinstalei o JSF, reinstalei a IDE, reinstalei o servidor e nada! Não funciona!

Testando outro projeto que eu tenho, funcionou normal.

Vocês tem ideia do que possa ser?

Obrigado!

7 Respostas

diogozero

Seu outro projeto tem essas mesmas tecnologias? Se sim, estão na mesma versão?

Está utilizando o Maven? Se tiver, pode ser que você tenha baixado uma versão mais atual de alguma biblioteca e ela tenha vindo com alguma incompatibilidade ou problema e você não percebeu…

XOOM
  1. A ação é um ajax? e a validação é retornada na mesma tela?
  2. FacesMessages que você quer mostrar vem de outra página(redirect)?
  3. É um problema isolado? (Veja se tem o <p:messages id=“messages” /> no xhtml)

Edit: Já usei o PrettyFaces e não tive problemas com o FacesMessages ou Ajax…

L

Seu outro projeto tem essas mesmas tecnologias? Se sim, estão na mesma versão?
Está utilizando o Maven? Se tiver, pode ser que você tenha baixado uma versão mais atual de alguma biblioteca e ela tenha vindo com alguma incompatibilidade ou problema e você não percebeu…

O outro projeto tem sim as mesmas tecnologias nas mesmas versões;
Já revisei todas as importações e arquivos xml do projeto e nada.

L

1. A ação é um ajax? e a validação é retornada na mesma tela?
2. FacesMessages que você quer mostrar vem de outra página(redirect)?
3. É um problema isolado? (Veja se tem o <p:messages id=“messages” /> no xhtml)

Edit: Já usei o PrettyFaces e não tive problemas com o FacesMessages ou Ajax…

Utilizo o ajax=false em dois casos:

<h:form styleClass="login" rendered="#{!controleAcesso.acessoLiberado and controleAcesso.checarConexao()}"> <p:panelGrid columns="2" styleClass="login"> <h:outputText value="Usuário:"/><p:inputText id="txtUsuario" value="#{controleAcesso.login}" maxlength="20" required="true" requiredMessage="Favor informar o usuário"/> <h:outputText value="Senha:"/><p:password id="txtSenha" value="#{controleAcesso.senha}" maxlength="20" promptLabel="" required="true" requiredMessage="Favor informar a senha"/> <h:outputText value=""/><p:commandButton action="#{controleAcesso.entrar()}" value="Entrar" ajax="false"/> </p:panelGrid> </h:form>

...
<p:commandButton style="margin-right: 3px" title="Salvar" action="#{documents.salvarAlteracao()}" icon="ui-icon-disk" rendered="#{documents.editar and documents.modoEdicao}" update=":frmTree :frmDocumento" 
ajax="false"/>
...

No primeiro caso, utilizo apenas o ajax=false. Eu esperava que fosse feito o forward padrão do JSF, pois a Prettyfaces já havia sido retirada.

No segundo caso, utilizo para salvar o anexo juntamente com as alterações do documento em questão.

OBS: Nos demais casos, onde o ajax está ativado, ajax=true, as mensagens aparecem normalmente.

L

Eu coloco o <p:messages> no template:

<p:growl id="messages" autoUpdate="true" life="5000" />
L

Outra coisa a destacar:

Ao se setar a propriedade KeepMessages,

<c:set target="#{flash}" property="keepMessages" value="true" />

ou

FacesContext.getCurrentInstance().getExternalContext().getFlash().setKeepMessages(true);

as mensagens são preservadas
entretanto são acumuladas e aparecem em todas as páginas, por exemplo:

Se o usuário errar o login, com essa propriedade ativa, as mensagens vao empilhando e poluindo a tela.
Quando o mesmo acessa, nas demais páginas do sistema elas continuam aparecendo.

Por conta disso, fica inviável utilizá-la.

Já tentei também limpar a lista de mensagens e não consegui nada! =(

L
Consegui resolver.

O problema estava ao se chamar uma função script no onload do body;

Troquei para usar o unload e pronto! =)
Criado 12 de julho de 2012
Ultima resposta 7 de ago. de 2012
Respostas 7
Participantes 3