Eu utilizava o richfaces e decidi utilizar o primefaces em um projeto, estou tendo grandeeeeeeeeeeeeeeeeeeees dificuldades com ele.
Uma delas é:
<p:commandLink id="novoContato" actionListener="#{Bac.novoContato}" immediate="true"
complete="if (#{facesContext.maximumSeverity==null or facesContext.maximumSeverity.ordinal lt 2}) dlgContato.show();">
<h:graphicImage value="/imagens/icons/add_obj.gif"
styleClass="label-coluna" />
</p:commandLink>
especificamente:
"if (#{facesContext.maximumSeverity==null or facesContext.maximumSeverity.ordinal lt 2}) dlgContato.show();"
Porque isso aqui não funciona no primefaces? como posso fazer isso, resolver isso?
Up, Ninguém tem conhecimento ou precisou de uma solução deste tipo??
Obrigado
Também estou com o mesmo problema… preciso identificar quando uma action gerou erros para saber se fecho ou não o meu dialog após clicar no botão salvar…
Acredito que o problema ocorre pois quando a página é renderizada a lista de mensagens do faces ainda está nula, e quando clicamos no botão ele faz uma chamada ajax para nossa action e não atualizada a lista de mensagens do faces…
Com o Richfaces é possível utilizar a tag abaixo para resolver o problema:
<a4j:jsFunction name="ajaxValidator" data="#{facesContext.maximumSeverity.ordinal}" oncomplete="if (data != 2) RichFaces.hideModalPanel('iddoseuPanel');">
Mas com o Primefaces também não sei como fazer…
Você já conseguiu resolver o seu caso?
Alguém tem alguma idéia?
Sim, consegui resolver.
Faço todo o controle pelo Bean.
Tenho uma lógica para checar o facesContext a procura de mensagens de erros ou warns.
Se houver mensagens eu não fehco o Dialog, se não houver fecho a dialog pelo próprio Bean.
Obrigado Weder! Vou tentar fazer o mesmo.
Segue um exemplo ai pra ajudar.
[code]public static boolean existeMessagemErro(){
Severity maximumSeverity = FacesContext.getCurrentInstance().getMaximumSeverity();
boolean validationFailed=false;
if (maximumSeverity != null
&& (maximumSeverity==FacesMessage.SEVERITY_ERROR || maximumSeverity
==FacesMessage.SEVERITY_FATAL)) {
validationFailed=true;
}
return validationFailed;
}
public static RequestContext getContext(){
return RequestContext.getCurrentInstance();
}[/code]
E no bean:
public void showDialogAtividade(){
if(!Support.existeMessagemErro())
Support.getContext().execute("dlgAtividade.show();");
}