Página 1 de 1

Mensagem de validação personalizada

MensagemEnviado: Sex Set 17, 2010 6:19 am
por rodrigofsacht
Tenho a seguinte dúvida:

Como faço para personalizar a mensagem de validação?
Por exempli, quando eu defino um campo como unique ( @Column(unique=true) ) se eu tento inserir um item duplicado ele da um erro bem estranho. Testei com o h2 e com o postgresql e ambos dão um erro de debug bem esquisito.

Gostaria de personalizar para uma saida mais clean.

Re: Mensagem de validação personalizada

MensagemEnviado: Sex Set 17, 2010 7:29 pm
por rogelgarcia
Bem, se a mensagem de validação foi dada pelo hibernate (o que é o caso, se a validacao foi disparada por uma anotacao do hibernate) o que voce tem que fazer é um catch da exceção, e trocar a mensagem. (Pelo que eu conheço do Hibernate, mas posso estar errado)

A outra alternativa que pode dar um pouco de trabalho, mas é bastante elegante e reaproveitavel, é usar um SQLErrorCodesTranslator para o seu banco. O Next já vem com alguns pré-configurados, mas dependendo da versão e idioma do seu banco e também da mensagem de erro, talvez o error code translator do next nao consiga traduzir.

Para criar o seu proprio errorCodeTranslator, o primeiro passo é ler a documentação do Spring sobre isso (O SQLErrorCodeTranslator é do Spring), depois voce deve utilizar a configuracao do banco de dados via xml, (tem um exemplo na documentacao do next, é só fazer igual) e configurar no seu dataSource o seu sqlErrorCodeTranslator personalizado.
Voce pode ver a classe PostgreSQLErrorCodeSQLExceptionTranslator do Next para ter uma noção de como implementar o seu.

Como terceira alternativa, voce pode criar um controller Mãe da sua aplicacao, sobrescrever o método handleRequestInternal, que delega para o super.handleRequestInternal e nesse método voce faz um try catch e se desejar troca a exceção recebida.