Utilizando messages em JSF

Boa tarde!!!

Estou tendo problemas para exibir mensagens globais em minha aplicação.

Quanto utilizo a tag <h:commandButton> para o botão que irá efetuar a ação do comando, a mensagem aparece perfeitamente na tela.
Mas quando utilizo o botão a4j:commandButton aparece a seguinte mensagem em meu console:

INFO: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.

Alguém sabe como resolver isso?

Obrigado!!!

jah aconteceu comigo mas nao soube como resolver
soh sei explicar:
eh pq o h:commandButton faz um submit…
e o messages soh ocorre numa submicao
o a4j:commandButton ele ocorre na mesma renderizacao
entao nao acontece submicao alguma mas mesmo assim a aplicacao percebe q ocorreu alguma execao mas nao vai poder exibir pq nao teve um refresh

mas eu axo q vc pode resolver fazendo com q qndo clicar no botao entao recarrege a pagia

no a4j commandoButton faz um reRender para onde esta seu h:message ou utilize um rich:message:
http://livedemo.exadel.com/richfaces-demo/richfaces/message.jsf?c=message&tab=usage

Eu acho ruim renderizar a pagina novamente… perco em desempenho… dessa forma não seria necessário utilizar ajax… :slight_smile:

Implementei uma idéia… agora você me diz se é gambiarra!! hehe

Criei vários objetos do tipo String como ex: msgValor, msgDescricao com seus getters e setters… então eu verifico em meu backbean se o campo obrigatório foi preenchido, se não for eu populo o msg através de seu set, então renderizo ao lado do campo da página!!! hehe fede mas resolveu…

Valew

nao precisa renderizar a pagina novamente, no reRender do commandButton vc diz apenas qual componente deve ser re-renderizado (normalmente um a4j:ouputPanel para messages).

Mas hoje em dia nao precisa nem mais disso, basta usar o rich:messages, é bem simples.

E sim, o que vc fez é gambiarra. :twisted:

Use rich:messages.

Valew Alessandro!!! Eu vi seu post logo após escrever aquela estupidez… hehe

Mas vou resolver do jeito que mostraste!!!

Obrigado mesmo… abraço

Coloca informaçoes codigos do que vc esta tentando fazer fica mais facil imaginar a situação.

Vou implementar a idéia do Alessandro!!! Assim que conseguir eu envio o código certinho!!!

Abraço…

da um reRender no seu h:messages

Funcionou… mas estou com outro probleminha… Na minha tela possuem dois botoões, como faço para que apenas um botão efetue a validação de campos manipulando mensagens???

Obrigado!!!

[quote=dahenz]Funcionou… mas estou com outro probleminha… Na minha tela possuem dois botoões, como faço para que apenas um botão efetue a validação de campos manipulando mensagens???

Obrigado!!![/quote]
coloca um immediate=“true” no botão q ñ quer validar o form

Robson… Coloquei o parâmetro immediate como true em um dos botões, e caí em outro problema.

Um botão deve validar um campo do tipo calendar, e outro botão eu salvo.

Quando coloco o immediate=“true” no botão validar data, no backbean o campo fica null, sendo o valor não carregado. Como eu resolveria isso?

Uma dica :

De um id para suas saidas de mensagens.

Por exemplo :

<h:outputText id="messages" value="#{bean.messages}" />

E em seus a4jComandButton, aplica a propriedade reRender para o componete de messages.

Ficando assim :

<a4j:comandButton reRender="messages" action="#{bean.button}" value="OK" />

Assim ele renderiza um determinado local de sua pagina sem renderizar sua pagina todo, como o submit do h:comandButton faz.

[ ],