Erro em conversão automática de Data - VRaptor [Resolvido]
4 respostas
N
NathanCR
Boa tarde,
Tenho um formulário a qual o usuário preenche a data no formato “dd/mm/yyyy” e ao submitar o formulário o VRaptor automaticamente popula o objeto “Controle” com o atributo do tipo “Date”.
O problema acontece quando o usuário preenche uma data inválida por exemplo “35/35/9999” o VRaptor converte automaticamente para uma data válida: “Thu Dec 05 00:00:00 BRST 2013” (05/12/2013), e na validação do sistema esse dado e tratado como válido.
@Temporal(TemporalType.DATE )
private Date data;
Como posso fazer para resolver essa conversão para validar a data corretamente?
Olá a todos.
Estou utilizando o VRAPTOR, neste caso, como conseguiria capturar os erros no Validator em tempo de Conversão, é possível isso?
Este Converter gera uma exception e consequentemente a data chega nula no controller, eu precisaria que retornasse algo parecido com:
try {
DateFormat format = new SimpleDateFormat("dd/MM/yyyy");
format.setLenient(false);
return format.parse(value);
} catch (ParseException e) {
validator.add(new ValidationMessage(bundle.getString("data"), bundle.getString("message.invalid.date")));
throw new ConversionError(MessageFormat.format(bundle.getString("message.invalid.date"), value));
}
Coloquei o Converter como @RequestScoped para injetar o validator, mas o seguinte erro é gerado:
Obrigado!
Lucas_Cavalcanti
vc só precisa do throw new ConversionError, ele já é adicionado automaticamente no validator.
e nesse caso, vc precisa ter a chamada validator.onErrorXXX no controller, como o erro está te falando.
guigasbody
Bom dia Lucas, obrigado pelo retorno.
Descobri o problema.
Estava usando uma classe que estendia Validator e não trazia nela os erros do Converter.
Quando mudei para o Validator do VRAPTOR funcionou perfeitamente.