JSF <h:message> - formatando msgs

4 respostas
F

Amigos,

Estou com um problema da exibição das mensagens de validação na tag <h:message>. Bom estou fazendo toda validação dentro dos setter do meu java bean, como segue abaixo:

public void setPcReajusteFranquiaCopt(BigDecimal pcReajusteFranquiaCopt) throws Exception{

//Valida o campo pcReajusteFranquiaCopt.

if (pcReajusteFranquiaCopt != null){
//O campo pcReajusteFranquiaCopt não pode ter o valor menor ou igual ao val do campo % de Reajuste
        if (getNrPctPedido() != null){ 
            if (pcReajusteFranquiaCopt.compareTo(getNrPctPedido()) != 1){
                throw new Exception("O campo Percentual de Reajuste Acrescido de franquia/co-participação " +
                        "não pode ter valor menor ou igual ao valor do campo Percentual de Reajuste.");
            }
        }

}

Até ai tudo bem, caso o meu atributo não esteja de acordo com a regra o método lança uma Exception com a descrição do erro. O problema está no meu JSP conforme mostrado abaixo:

<t:inputText style=“width:20%” required=“false” id=“idPercReajFranquia” value="#{comunicadoReajusteController.comunicadoReajuste.pcReajusteFranquiaCopt}"/>
<h:message for=“idPercReajFranquia” style=“color:red;font-size:10px”/>

A mensagem que está sendo exibida é a seguinte:
javax.faces.el.EvaluationException: javax.el.ELException: java.lang.Exception: O campo Percentual de Reajuste Acrescido de franquia/co-participação não pode ter valor menor ou igual ao valor do campo Percentual de Reajuste.

Repare que funcionou corretamente a validação no bean porém junto com a msg é exibido as exceções do faces "javax.faces.el.EvaluationException: javax.el.ELException: java.lang.Exception: ". COMO EU FAÇO PARA EXIBIR SOMENTE A MSG DA MINHA EXCEPTION QUE DEFINI NO MEU BEAN ???

4 Respostas

Marky.Vasconcelos

Voce pode fazer isso:

if (pcReajusteFranquiaCopt.compareTo(getNrPctPedido()) != 1){ 
FacesContext.getCurrentInstance().addMessage("idPercReajFranquia","O campo Percentual de Reajuste Acrescido de franquia/co-participação " + 
"não pode ter valor menor ou igual ao valor do campo Percentual de Reajuste.");
return; 
}
F

Obrigado pela resposta, porém quando implemento a sua solução não esta exibindo mais a mensagem ! Deve estar acontecendo algo que ele está se perdendo.

O método implementado ficou assim:

if (getNrPctPedido() != null){

if (pcReajusteFranquiaCopt.compareTo(getNrPctPedido()) != 1){

FacesContext.getCurrentInstance().addMessage(idPercReajFranquia”, new FacesMessage("O campo Percentual de Reajuste Acrescido de franquia/co-participação " +não pode ter valor menor ou igual ao valor do campo Percentual de Reajuste.”));

return;

}

}
Marky.Vasconcelos

=/

Não tenho esse tipo de problema eu uso o <h:messages /> no topo da pagina assim todas as mensagens vão para lá.

F

Faaala,

Poh ontem quando falei que não dava para aplicar a sua solução era porque estava querendo fazer a validação no setter do ENTITY BEAN não do MANAGE BEAN que por sinal a sua solução funciona !!! De qualquer maneira muito obrigado pela solução estou utilizando ela !!! :smiley:

Criado 31 de março de 2008
Ultima resposta 1 de abr. de 2008
Respostas 4
Participantes 2