Utilizando messages em JSF

12 respostas
dahenz

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!!!

12 Respostas

Marlon_Meneses

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

Alessandro_Lazarotti

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

dahenz

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

Alessandro_Lazarotti

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.

dahenz

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

Mas vou resolver do jeito que mostraste!!!

Obrigado mesmo… abraço

overkill

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

dahenz

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

Abraço…

robson_vs

da um reRender no seu h:messages

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!!!

robson_vs

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!!!


coloca um immediate=“true” no botão q ñ quer validar o form

dahenz

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?

mateusprado

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.

[ ],

Criado 6 de janeiro de 2009
Ultima resposta 7 de jan. de 2009
Respostas 12
Participantes 6