Problema com custon error message
12/07/2012 14:43
0
Pessoal,

Gastei uma manha inteira tentando resolver esse problema, preciso do apoio de vocês.

Tenho uma propriedade nome, presente em uma classe Cliente, dentro do pacote br.com.usuario.

	static constraints = {
nome(blank: false, nullable: false, maxsize: 20, size: 3..20)
}


Um controller para efetuar o cadastro do cliente:

			if(cliente.save(flush: true)){
}else{
cliente.errors.allErrors.each {
flash.message += it.toString()
}


E adicionei a seguinte linha nos arquivos messages.properties e messages_pt:

cliente.nome.blank=TESTE


Gostaria de criar minha próprias mensagens de erros apartir das constraints que ja declarei, não so para blank, mas para limite de tamanho, enfim.... mas ja procurei muito e não encontro nenhum artigo, tutorial que me ajudasse.

agradeço desde ja
Tags: Custon message, 18n, mensagens de erro, customizado


0
// The following example does not use custom validation.
// A custom message may be defined in messages.properties:
// user.username.blank=Please enter a username
// which will be used instead of default.blank.message
class User {

String username

static constraints = {
username blank: false
}
}

Fiz a mesma coisa
12/07/2012 14:51


0
Usei como referencia o link abaixo:

http://grails.org/doc/latest/ref/Constraints/validator.html

Minha versão do Grails é 2.0.4
12/07/2012 14:52


1
Olá, Daniel.

Na verdade você deve criar:

cliente.nome.blank.error=SUA MENSAGEM DE ERRO E TAL


E não precisa criar em mais de um arquivo. No messages.properties já bastaria (a não ser que realmente pense em criar um aplicação em vários idiomas).

Se preferir, pode criar um arquivo com qualquer nome (por exemplo, "pessoa.properties") na pasta "i18n" e por essas mensagens lá ao invés de deixar tudo num "arquivão" ;)


0
Yoshiriro, infelizmente não funcionou =(

Fiz uma arquivo cadastro.properties e coloquei "cliente.nome.blank.error=TESTE"

Acho que o erro deve ser na apresentação do(s) erro(s), estou fazendo dessa maneira:
cliente.errors.allErrors.each { flash.message += it.toString() }

O que deve ser?
12/07/2012 17:44


1
Daniel, o que não precisa é manipular as mensagens de erro no controlador.

Quando você tenta persistir o objeto, o grails já injeta nele os errors de validação, caso existam. Dai você já é redirecionado de volta para o GSP de origem.
Lá, basta usar a tag <g:eachError>, +- assim:
<ul>
<g:eachError bean="${cliente}" var="error">
<li><g:message error="${error}"/></li>
</g:eachError>
</ul>

Assim a mensagem aparace já conforme configurou no teu arquivo de mensagens.


1
Ah, tem a opção mais simples também:

<g:renderErrors bean="${cliente}" />


0
Não apresenta nada na tela
12/07/2012 18:46


0
Muito bom José, agora deu certo...

Joguei fora meus .class e usei essa taglib.

Cara, mais uma vez muito obrigado pela sua ajuda.

Muito obrigado mesmo =D
12/07/2012 18:49



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