[JSF] Ajuda com validator, simples [RESOLVIDO]

Pessoal;
Excelente dia à todos!

Gostaria de contar com a ajuda dos colegas sobre validar campos. Tenho um h:inputText:

<td><div align="left"><h:inputText required="true" id="vlrComp" validatorMessage="#{Messages.msgValorAlto}" maxlength="10" size="10" value="#{Movimento.movValor}" requiredMessage="#{Messages.msgVlrIncErr}"><f:validateDoubleRange maximum="#{Movimento.funcSaldo}"/></h:inputText></div></td> 

No momento há duas validações nele:

  1. Se o conteúdo do campo for deixado em branco (requiredMessage);
  2. Se o valor máximo ultrapassar um X (f:validateDoubleRange);

AS mensagens estão vindo de uma classe bem simples, não sei se é o correto:

    public String getMsgValorAlto(){
        return "Valor digitado está acima do saldo disponível, Verifique !!!";
    } 

    public String getMsgVlrIncErr(){
        return "O Valor deve ser informado, Verifique !!!";
    } 

Até aí está ok, porém gostaria de acrescentar mais duas validações:

  1. Se o usuário digitar 0 (ZERO) = “Informe um valor”
  2. Se o usuário digitar , (VIRGULA) = “Formato inválido para o valor, utilize ponto ao invés de virgula”

Podem me ajudar com este probleminha?

Desde já agradeço;

Marco Aurélio

Simplifica isso. Cria um validator (classe que implementa Validator), registra ele no faces-config.xml, e adiciona sua id no seu componente que será validado.

[code]class ValidacaoTal implements Validator {
boolean metodoValidaIsso() { … }
boolean metodoValidaAquilo() { … }
boolean metodoValidaAquele() { … }
boolean metodoValidaAcola() { … }
@Override
public void validate(FacesContext arg0, UIComponent arg1, Object arg2)
throws ValidatorException {
FacesMessage messages = new FacesMessage();
if (!metodoValidaIsso()) {
messages.setDetail(“pau nisso”);
throw new ValidatorException(messages);
}
if (!metodoValidaAquilo()) {
messages.setDetail(“pau no aquilo”);
throw new ValidatorException(messages);
}
etc.
}

}[/code]

Olá peerLess;
Rápido você heim… rs

Muitíssimo obrigado!

Gostaria de contar mais uma vez com sua ajuda, estou aprendendo JAVA sozinho, lendo alguns livros, lendo artigos e contando com o auxilio de colegas como você. Desta forma não te impaciente com minha perturbação, mas alguns conceitos básicos me faltam.

Minha dúvida é a seguinte:

Construí a classe como me orientou (com ressalvas):

package util;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

class ValidaVda implements Validator {   
boolean validaDataCompZero() { }   
boolean validaDataCompLen() { }   
boolean validaValCompZero() {  }   
boolean validaValCompMax() {  }   

@Override   

    public void validate(FacesContext arg0, UIComponent arg1, Object arg2) throws ValidatorException {   
        FacesMessage messages = new FacesMessage();   
        if (!validaDataCompZero()) {   
            messages.setDetail("Data da compra deve ser preenchida, verifique!");   
            throw new ValidatorException(messages);   
        }   
        if (!validaDataCompLen()) {   
            messages.setDetail("Data da compra deve estar no formato 'DD/MM/AAAA', verifique!");   
           throw new ValidatorException(messages);   
        }
        if (!validaValCompZero()) {   
            messages.setDetail("Valor da compra não pode ser ZERO, verifique!");   
           throw new ValidatorException(messages);   
        }

        if (!validaValCompZero()) {   
            messages.setDetail("Valor da compra não pode ser maior que ???????, verifique!");   
           throw new ValidatorException(messages);   
        }
    }
} 

Como faço para passar os parâmetros para os métodos? Exemplo, no método validaValCompMax tenho que passar o valor que o usuário está digitando e o valor do crédito (que está em um bean) para que eu possa checar a validação.
Como passo isso para este método através da JSP?

Outra dúvida é com relação ao uso desta classe (ValidaVda), deve ser chamada no h:commandbutton ou no h:inputtext mesmo? Como?

Poderia colocar uma parte de código com este tipo de exemplo? Assim poderia estudar e aprender!

Obrigado, mais uma vez!

Abraço

Marco A.

Oi, aqui comigo não tenho nenhuma implementação, por agora.

aqui você vê algo interessante sobre Validators, e aqui você tem um bom tutorial que acredito, possa responder todas as suas questões. Outra coisa importante a ressaltar é que tu tem teu escopo em: FacesContext pense nele como se fosse pensar na view.

t+

Maravilha!!!

“Brigadíssimo”, creio que não exista esta palavra mas serve para demosntrar minha gratidão!

Resolveu, me quebrou um galhão!

Abraço!

Marco A