Se o conteúdo do campo for deixado em branco (requiredMessage);
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:
Se o usuário digitar 0 (ZERO) = “Informe um valor”
Se o usuário digitar , (VIRGULA) = “Formato inválido para o valor, utilize ponto ao invés de virgula”
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.
}
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!
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.