Grieles problema con los mensajes de error personalizados -- grails campo con groovy campo con grails-plugin campo con grails-validation camp Relacionados El problema

Grails Problem with custom error messages


13
vote

problema

Español

Actualmente estoy tratando de especificar mensajes de error personalizados en Grails para las restricciones predeterminadas, pero hasta ahora todo lo que recibo es el mensaje de error predeterminado.

Sé que tengo que editar el archivo GRAPS-APP / I18N / MENSAss.properties

Si cambio el siguiente mensaje de códigos de error predeterminado, mostrará correctamente el nuevo mensaje de error

  default.blank.message=Property [{0}] of class [{1}] cannot be blank   

Sin embargo, esto no es lo que estoy tratando de hacer. Necesito más informes de errores granulares y tener más de un campo que puede estar en blanco, etc. Lo que me gustaría poder hacerlo sería, mostrar mensajes personalizados para cada campo en una clase

  package com.mycompany.myapp  class Test{   String name  def constraints = {  name(nullable:false, blank:false)  } }   

(siguientes códigos adjuntos al final de los mensajes.properties)

  test.name.blank=Name cannot be blank test.name.nullable=Name cannot be nullable   

Según la documentación de GRAILS, esto debería funcionar correctamente, ya sea con o sin el nombre del paquete - ClassName.PropertyName.Blank

grille.org/doc/latest/ (sección de restricciones) y amp; (Sección 7.4 - Validación y amplificador; Internacionalización)

He intentado todos los comnbinaciones en los que puedo pensar, pero siempre muestra el mensaje personalizado

También he intentado instalar el complemento de plantillas I18N de Grieles

http://www.greils.org/i18n+templates+plugin < / p>

que generó los códigos de error automáticamente para mí. Aprinde los nuevos códigos de error hasta el final del archivo Mensajes.Properties existente, pero todavía obtengo los mensajes de error predeterminados.

Sin embargo, había algo diferente con los códigos de error que fueron generados por el complemento.

en lugar del formato especificado en el documento de GRAILS DOC - TEST.NAME.NULL = ......, generó automáticamente test.name.null.error = mensaje personalizado

También he intentado eliminar completamente los mensajes de error predeterminados, pero todavía se muestran

Si alguien ha experimentado este problema antes, apreciaría cualquier ayuda que cualquiera pueda darme

gracias de antemano

Original en ingles

I am currently trying to specify custom error messages in grails for the default constraints but so far all I get back is the default error message.

I know that I have to edit the grails-app/i18n/messages.properties file

If I change the following default error codes message, it will correctly display the new error message

default.blank.message=Property [{0}] of class [{1}] cannot be blank 

However, this is not what I am trying to do. I need more granular error reporting and have more than one field that can be blank etc. What I would like to be able to do would be, display custom messages for each field in a class

package com.mycompany.myapp  class Test{   String name  def constraints = {  name(nullable:false, blank:false)  } } 

(following codes appended to end of messages.properties)

test.name.blank=Name cannot be blank test.name.nullable=Name cannot be nullable 

According to the grails documentation this should work correctly, either with or without the package name - className.propertyName.blank

grails.org/doc/latest/ (constraints section) & (section 7.4 - validation & internationalization)

I have tried all comnbinations that I can think of, but it always displays the custom message

I have also tried installing the grails i18n templates plugin

http://www.grails.org/I18n+Templates+Plugin

which generated the error codes automatically for me. I appended the new error codes to the end of the existing messages.properties file but I still get the default error messages.

However, there was something different with the error codes that were generated by the plugin.

instead of the format specified in the grails doc - test.name.null=......, it automatically generated test.name.null.error=Custom Message

I have also tried deleting the default error messages completely, but they are still displayed

If anyone has experienced this issue before, I would appreciate any help that anyone can give me

Thanks in advance

           
     
     

Lista de respuestas

18
 
vote
vote
La mejor respuesta
 

Poner DEF MENSAJESOURCE (EN CONTROLADOR O SERVICIO)

  List<Size>8  

También encontré un buen enlace que explica esto mejor

http://johnrellis.blogspot.com/ 2010/ 02 / recupere-Grails-Dominio-Errores-from.html

 

put def messageSource (in controller or service)

item.errors?.allErrors?.each{  println  messageSource.getMessage(it, null) }; 

I also found a good link which explains this better

http://johnrellis.blogspot.com/2010/02/retrieve-grails-domain-errors-from.html

 
 
8
 
vote

Bueno, la documentación le muestra un ejemplo de cómo anular los mensajes para una de las restricciones de validación predeterminadas (en blanco, anulable, mínimo, max, tamaño, rango, etc.). Pero no le indica que se vea en la documentación de cada restricción y en la parte inferior le muestra qué tecla de propiedad usar:

Código de error: classname.propertyname.size.toosmall o classname.propertyname.size.toobig

para restricción Tamaño http: // grilas .org / doc / Último / ref / restricciones / size.html

Entonces, para

  List<Size>9  

Uso:

com.example.user.username.size.toosmall = yo allí! Demasiado pequeño: [{0}] de clase [{1}] con valor [{2}] no se encuentra dentro del rango de tamaño válido de [{3}] a [{4}]

com.example.user.username.size.toobig = ¡Yo allí! Demasiado grande: [{0}] de clase [{1}] con valor [{2}] no se encuentra dentro del rango de tamaño válido de [{3}] a [{4}]

 

Well, the documentation shows you an example of how to override the messages for one of the default Validation Constraints (blank, nullable, min, max, size, range, etc.). But it fails to tell you to look in the documentation for each Constraint and at the bottom it shows you what propery key to use:

Error Code: className.propertyName.size.toosmall or className.propertyName.size.toobig

for Constraint size http://grails.org/doc/latest/ref/Constraints/size.html

So, for

package com.example class User {     String username      static constraints = {         username  size:5..15     } } 

use:

com.example.User.username.size.toosmall=Yo there! too small: [{0}] of class [{1}] with value [{2}] does not fall within the valid size range from [{3}] to [{4}]

com.example.User.username.size.toobig=Yo there! too big: [{0}] of class [{1}] with value [{2}] does not fall within the valid size range from [{3}] to [{4}]

 
 
 
 
0
 
vote

Puede ser que sus limitaciones no sean estáticas, debe especificarse como "restricciones estáticas = {..."

También tenga en cuenta que los valores predeterminados anulables son falsos para que no necesite especificar eso.

 

It might be that your constraints aren't static - it should be specified as "static constraints = { ..."

Also note that nullable defaults to false so you don't need to specify that.

 
 
 
 
0
 
vote

Utilizo nombres de clase totalmente calificados en mis mensajes.properties

  String0  
 

I use fully qualified class names in my messages.properties

com.shareyourlove.User.password.blank=Some custom message 
 
 
   
   
0
 
vote

Esto funcionó para mí

  String1  

en lugar de

  String2  
 

This worked for me

com.model.Customer.name.nullable.error = Custom message 

instead of

com.model.Customer.name.blank = Custom message 
 
 

Relacionados problema

0  Validador con GRILS: Error al crear el usuario  ( Validator with grails failed to create the user ) 
Tengo esto: class Usuario { String username String password String passwordDos String nombre String apellidoPatern...

0  GRILS CLASE DE PROPIEDADES DE LA CLASE DE LA CLASE DE LA CLASE DE LA CLASIFICACIÓN  ( Grails domain class property set failed validation ) 
Tengo problemas con un setter en grieles. Tengo dos propiedades BEFORETAX y OFTTAX. Solo quiero almacenar una propiedad en el DB BeFeTax. En la UI quiero que ...

10  GRILS: Objetos de comando anidados  ( Grails nested command objects ) 
En mi aplicación GRAILS, tengo un objeto de comando exterior que contiene una lista de otros objetos de comando: public class OuterCommand { List<Inne...

3  Validar la dirección IP en GRILS  ( Validate ip address in grails ) 
Estoy buscando una forma de validar las direcciones IP en Grails a través de restricciones. es algo como esto posible? package example class Ip { S...

7  GRILS Conditable Validación anulable o validador personalizado con opción anulable  ( Grails conditional nullable validation or custom validator with nullable option ) 
Tengo un formulario para crear un lugar. Dependiendo del país, el campo de la provincia (estado, región) se requiere o no. ¿Cuándo no se requiere, quiero se...

0  GRILS 2.2.4: Propiedad transitoria: ¿Por qué se llama dos veces el validador personalizado?  ( Grails 2 2 4 transient property why is the custom validator being called twice ) 
Dado un dominio simple con una propiedad transitoria, tal: package org.example.domain class Ninja { String name String sensei static transie...

0  Interrumpiendo los métodos dinámicos de grieles  ( Interrupting grails dynamic methods ) 
Tengo una aplicación de grieles. En lo que tengo una clase modelo llamada libro. Desde cualquier control, si estoy llamando a Book.List (), book.get (ID) y al...

0  GRILY VALIDACIÓN SOBRE EL DOMINIO PROPIO  ( Grails validation over own domain ) 
Estoy usando Grails 2.4.2 y tengo una clase contrato que tiene muchos FIEICERECIPIENTE'S . La clase de FactOicerecipients tiene un atributo factueficeype ...

5  ¿Cómo creo y la validación XOR para dos campos en una clase de dominio de grieles?  ( How do i create and xor validation for two fields in a grails domain class ) 
Tengo un problema en el que mi clase de dominio tiene dos claves externas de potencial mutuamente exclusivas, ya sea un número de serie o un valor de búsqueda...

1  GRILS validable no funciona para una clase de dominio no persistente  ( Grails validateable not work for non persistent domain class ) 
He seguido la instrucción aquí: http: //www.grails .org / Doc / Último / Guía / 7% 20validation.html y agregado en config.groovy : grails.validateable...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos