Mensagem de validação personalizada

Não deixe de perguntar, solucione aqui suas dúvidas...

Mensagem de validação personalizada

Mensagempor rodrigofsacht » Sex Set 17, 2010 6:19 am

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.
rodrigofsacht
 
Mensagens: 8
Data de registro: Ter Ago 03, 2010 1:19 am

Re: Mensagem de validação personalizada

Mensagempor rogelgarcia » Sex Set 17, 2010 7:29 pm

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.
rogelgarcia
Administrador
 
Mensagens: 674
Data de registro: Qua Jul 08, 2009 9:02 am


Retornar para Dúvidas

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes

cron