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:dataTableid="pdtTransportadores"var="trans"value="#{transportadorBean.transportadores}"style="width:600px"emptyMessage="Não existe transportador cadastrado.">
MBean
publicList<Transportador>getTransportadores(){
if(transportadores==null)consultarTransportadores();returntransportadores;}
privatevoidconsultarTransportadores(){
try{
this.transportadores=transportadorDao.findAll();}
catch(Exceptione){
super.logError(e,"Erro ao consultar transportadores");FacesUtils.mensErro("Erro ao consultar transportadores");}
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?
A
alves.Felipe
esta no primeiro post
A
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)]
M
max.analista
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)]
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
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…
A
alves.Felipe
Então Max…
acabei de conseguir fazer funcionar…
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…