JSF 2 não mostra mensagem h:messages [RESOLVIDO]

Fala galera,
estou trabalhando com jsf 2 junto com prime faces.
O que acontece é o seguinte, tenho uma página que tem um p:dataTable, e no método da consulta, está lancando um exceção,
mas a mensagem não é mostrada na tela, ja coloquei p:messages h:messages , p:growl e não mostra nada…
como a consulta é efetuada soh qdo é reenderizado o datatable, preciso de alguma forma mandar atualizar o messages…
como chamo a tela:

<p:menuitem  value="Transportador" url="/pages/admin/transportador/cadastrar.jsf" />

datatable

<p:dataTable  id="pdtTransportadores" var="trans" value="#{transportadorBean.transportadores}"  style="width:600px" emptyMessage="Não existe transportador cadastrado.">

MBean

[code]public List getTransportadores()
{
if(transportadores == null)
consultarTransportadores();

	return transportadores;
}

private void consultarTransportadores()
{
try
{
this.transportadores = transportadorDao.findAll();
}
catch (Exception e)
{
super.logError(e, “Erro ao consultar transportadores”);
FacesUtils.mensErro(“Erro ao consultar transportadores”);
}[/code]

alguma sugestão?
abraco

Mostra a sua xhtml por favor.

fica muito grande postar o xhtml inteiro aqui…
o que precisa saber?

<h:form id="formCadastrados"> <p:growl id="growl2" /> <div class="mensagem"> <p:messages /> teste </div> <p:dataTable id="pdtTransportadores" var="trans" value="#{transportadorBean.transportadores}" style="width:600px" emptyMessage="Não existe transportador cadastrado."> <p:column style="width:40px"> <f:facet name="header"> <h:outputText value="#{requestScope.msg.label_id}" /> </f:facet> <h:outputText value="#{trans.id}" /> </p:column>...

A chamada ao método da consulta e o h:messages

No Bean:

FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,null,"Escreva_aqui_a_mensagem_de_erro")); //Você pode mudar o tipo de SERVERITY

Na View:

<p:messages id="messages" showDetail="true" autoUpdate="true"/> //Se necessário habilite ou não showSummary.

Caso o seu botão de chamada ao método que verifica a exceção seja Ajax, verifique a renderização do campo de mensagem.

Deu certo? :wink:

esta no primeiro post

Max eu ja tinha tentado o autoupdate, mas de qq forma não deu certo ainda…

INFO: AVISO: FacesMessage(s) foram enfileirados, mas podem não ter sido exibidos. sourceId=null[severity=(ERROR 2), summary=(Erro ao consultar transportadores), detail=(Erro ao consultar transportadores)]

[quote=alves.Felipe]Max eu ja tinha tentado o autoupdate, mas de qq forma não deu certo ainda…

INFO: AVISO: FacesMessage(s) foram enfileirados, mas podem não ter sido exibidos. sourceId=null[severity=(ERROR 2), summary=(Erro ao consultar transportadores), detail=(Erro ao consultar transportadores)]

[/quote]

Estranho…
Você está usando dessa forma?

FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,null,"Escreva_aqui_a_mensagem_de_erro"));

Tenta ao invés de utilizar FacesMessage armazenar o erro em uma variavel String e no lugar de <p:messages/> você coloca um

 <h:outputText value="#{seuBean.stringErro}" style="color: red"/>

cara… tipo depois que abre a tela… e eu clico no botão cadastrar… ai sim mostra a msg dos campos obrigatórios…
mas nesse caso de abrir a tela e ja mostrar o erro nao mostra… vou tentar fazer o que vc falou…

Então Max…
acabei de conseguir fazer funcionar… :smiley:
se eu colocar o messages pra baixo do datatable funciona…
como os messages estavam em cima, eles eram reenderizados antes da datatable… e como o proprio datatable chama o método
o erro vem depois de reenderizar o datatable…
usando o <p:growl autoUpdate=“true”/> fica tranquilo…
mas se fosse usar o p:messages, a msg mostra soh la em baixo…rs
mas é isso ai…
valeo pela ajuda…