Fala gente boa,
Estou tentando criar uma validação customizada, até tudo bem.
Aí vai o código:
public class ValidadorDataNasc extends FieldValidatorSupport{
private int a,atual;
private Date d;
private String min,max;
@Override
public void validate(Object obj) throws ValidationException {
String nomeCampo = getFieldName();
Date campo = (Date)this.getFieldValue(nomeCampo, obj);
try{
SimpleDateFormat dataForm = new SimpleDateFormat("dd/MM/yyyy");
try{
String dt = dataForm.format(campo);
d = dataForm.parse(dt);
Date hoje = new Date();
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(hoje);
atual = cal.get(Calendar.YEAR);
cal.setTime(d);
a = cal.get(Calendar.YEAR);
//se ano maior que 1994
if((a > atual-15) ||(a < atual-120)){
addFieldError(nomeCampo, obj);
String inicio = String.valueOf(atual-119);
String fim = String.valueOf(atual-16);
setMin("01/01/"+inicio);
setMax("31/12/"+fim);
}//fim if
//se data errada
}//try
catch(NullPointerException er){
addFieldError(nomeCampo, obj);
}//catch
}//fim try
catch(ParseException e){
addFieldError(nomeCampo, obj);
}//fim catch
}//fim do validate
public String getMin() {
return min;
}
public void setMin(String min) {
this.min = min;
}
public String getMax() {
return max;
}
public void setMax(String max) {
this.max = max;
}
}//fim da classe
Na minha classe action eu coloquei a validação:
@RequiredFieldValidator(message="Favor digite a data de nascimento")
@CustomValidator(message="Data errada! Digite uma data entre ${min} e ${max} ",type="validadorData")
public Date getDtNascimento() {
return dtNascimento;
}
Na classe customizada eu criei dois atributos min e max e seus respectivos getts e setts.
Então eu deveria poder pegá-los mas não dá certo, simplismente não aparece nenhum valor para as chamadas
${min} e ${max}, só aparece a frase:
Sem os valores dos atributos.
Já tentei extender a classe de DateRangeFieldValidator mas também acontece a mesma coisa.
Se alguém tiver uma idéia eu agradeço.
Valeu