Dúvida Primefaces e FacesContext.maximumSeverity

6 respostas
W

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?

6 Respostas

W

Up, Ninguém tem conhecimento ou precisou de uma solução deste tipo??

Obrigado

M

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?

W

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.

M

Obrigado Weder! Vou tentar fazer o mesmo.

W

Segue um exemplo ai pra ajudar.

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

E no bean:

public void showDialogAtividade(){
		if(!Support.existeMessagemErro())
			Support.getContext().execute("dlgAtividade.show();");
	}
M

Valeu cara, funcionou! :smiley:

Criado 28 de março de 2012
Ultima resposta 2 de mai. de 2012
Respostas 6
Participantes 2