Personalizar mensagem de validação
03/09/2013 00:09
0
Pessoal estou passando por um problema meio irritante...
Quando coloco letras em um campo numérico a mensagem que recebo é essa:
O campo org.springframework.context.support.DefaultMessageSourceResolvable: codes [carinvest.Movimento.valorInicial,valorInicial]; arguments []; default message [valorInicial] deve ser um número válido.

O erro é um typeMismatch dentro do meu campo, que é um BigDecimal. Eu queria que aparecesse: 'O campo Valor deve ser um número válido.'

Meu código para mostrar as mensagens os erros é esse aqui:
<g:each in="${movimentoInstance.errors.allErrors}" var="error">
<g:message error="${error}" />
</g:each>
Tags: typeMismatch validação erro personalizar


2
O erro acontece após o objeto ser passado por params ao controller, provavelmente no momento de conversão. Você pode manualmente verificar e tratar isso lá, exemplo:


def save(){
//isso foi só um exemplo, use a verificação que lhe convenha
if(params.valorIncial == 'blablba bla'){
.... faça qlqer coisa
}else{
... trate-o
}
}


Ainda no lado do server, você pode criar uma validação customizada, vejas esses links:
Documentação
Blog exemplo

Mas você também pode tratar isso no lado do cliente, sem a necessidade de testar isso no servidor, neste caso você poderá usar o próprio HTML5 ou fazer o uso de alguma biblioteca de validação, como o jquery validation.

HTML5: Neste caso você pode definir os extremos, e o intervalo de crescimento

<input type="number" name="valorInicial" min="0.5" max="5">


Se vor usar jQuery: link

Boa sorte!

[]'s

03/09/2013 12:04


0
Oi Luciano, muito obrigado pela resposta.

O problema está acontecendo na hora que ele vai converter os params para minha entidade sim. Eu até poderia criar um erro personalizado, mas eu queria aproveitar a validação que já está sendo feita pela própria arquitetura, caso contrário eu vou ter que fazer a validação da tela campo por campo.
03/09/2013 17:22


0
Pessoal resolvi de um jeito bem mais simples. No meu input da tela, faltava apenas um
type="number" step="0.1"

como o grails tinha gerado minhas views, essas propriedades específicas do campo ficaram faltando. Agora ele mesmo está validando a entrada antes de mandar pro controlador e disparar o erro.

Valeu!
04/09/2013 00:36


0
delki8


Para você retornar uma mensagem personalizada em um erro padrão do Grails: min, max, inList (...) você deve configurar no seu arquivo de messages_lng.properties no i18n da seguinte forma:


classe.nomePropriedade.erro

Ex.:

usuarioCommand.nome.blank = Esta é a minha mensagem!


Com isso a validação 'blank' na minha classe UsuarioCommand mostrará esta mensagem. No seu caso, basta repetir para typeMismatch.java.math.BigDecimal e colocar a mensagem que você quer.

Espero que tenha ajudado.

Abs e boa sorte com o projeto.




Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto