Pergunta

Minha mensagem.properties contém isso por padrão:

typeMismatch.java.lang.double = Propriedade {0} deve ser um número válido

O espaço reservado {0} é substituído pelo nome do atributo. Eu quero usar o rótulo usado para o front -end como este:

typeMismatch.java.lang.double = Propriedade {Etiqueta maravilhosa aqui} deve ser um número válido.

Minha primeira tentativa:

typeMismatch.java.lang.double = propriedade $ {message (code: '0')} deve ser um número válido.

não está funcionando porque não há mensagem '0'. A documentação não está clara nesse ponto. Alguém tem uma ideia para este?

Editar:

Bem, eu posso escrever uma mensagem de erro para todos os atributos como este:

typeMismatch.book.bookNumber = Propriedade O bookNumber deve ser um número válido.

Mas isso parece muito trabalho extra ...

Foi útil?

Solução

Então, eu cometi um pequeno erro .. É Damm fácil agora ... eu vou responder aqui. Talvez alguém encontre nisso:

Meu erro foi:

typeMismatch.java.lang.Double=Property {0} must be a valid number

{0} foi substituído pelo nome dos atributos.

A razão por trás disso foi que o Grails API RenderError está procurando nomes de classe e propriedades corretos.

Por exemplo:

Minha aula é nomeada livro e propriedade é número.

Nas propriedades da minha mensagem:

book.number = Booknumber

Para i18n, tudo funcionou bem, mas quando a mensagem de erro deve ocorrer, mostra o seguinte:

"Property number must be a valid number."

Versão correta nas propriedades da mensagem:

Book.number = Booknumber

Funciona para mim agora. :-)

Outras dicas

Incrível! Agradecemos muito por seu post! Quando não funcionou para mim no começo, levei algum tempo para perceber que precisava usar o nome da classe totalmente qualificado na frente do nome da propriedade. Então a sintaxe é:

package.ClassName.propertyName=Label

Muito útil! Obrigado novamente! Al

Os validadores de erro de ligação de dados da primavera ("{0}" devem ser um número válido) querem fullClassName.fieldNameNome da classe curta e/ou .label não são reconhecidos, veja org.springframework.validation.DefaultBindingErrorProcessor#getArgumentsForBindError

Validadores do Grails ("{0} deve ser um endereço de email válido") querer FQClassName.fieldName.label ou classPropertyName.fieldName.labelAdicionando .label é uma obrigação, como evidente de org.codehaus.groovy.grails.validation.AbstractConstraint#rejectValueWithDefaultMessage

Portanto, você precisa de ambos FQN/shortClassName.attributeName.label e FQN.attributeName Para obter o mesmo nome traduzível para o ser humano em ambas as validações.

http://jira.grails.org/browse/grails-8369

Uma outra dica, caso isso ajude a próxima pessoa, se você estiver recebendo uma mensagem de erro hostis como "Property Producer.EmployeEcount deve ser um número válido" tente adicionar uma propriedade chamada simplesmente produtora.EmployeECount ao seu arquivo de mensagens.properties, como tal, como tal :

produtor.EmployeECount = Número de funcionários

Pelo menos no Grails 2.0.0, isso resultará em uma mensagem mais amigável: "O número de funcionários da propriedade deve ser um número válido".

Usando o nome da classe totalmente qualificado (por exemplo, com.example.domain.client.employeecount), com ou sem ".label" no final não funcionou para mim.

Espero que isso ajude alguém.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top