Dúvida Primefaces e FacesContext.maximumSeverity

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();"); }

Valeu cara, funcionou! :smiley: