2010-07-16 14 views
14

¿Alguien sabe cómo puedo obtener el fieldError para imprimir en el siguiente ejemplo.Visualización de errores de campo de Grails

para cada elemento con un error, me gustaría imprimir mensajes de error que he definido en las messages.properties presentar

por el momento todo esto hace es imprimir los códigos de error por defecto

item.errors?.allErrors?.each{ 
    println it.toString() 
} 

He visto otros ejemplos donde puede buscar un código de error para un campo, por ejemplo

it.getFieldError('title').code 

pero me gustaría convertir el mensaje predeterminado en mi nuevo mensaje de error e imprimirlo.

Respuesta

20

Necesita acceder al mensaje Bean de fuente, p. con

def messageSource 

en su controlador o servicio. A continuación, puede acceder a los mensajes con

def locale = Locale.getDefault() 
for (fieldErrors in bean.errors) { 
    for (error in fieldErrors.allErrors) { 
     String message = messageSource.getMessage(error, locale) 
    } 
} 
+1

MessageSource puesto def (en el controlador o servicio) Gracias Esto funcionó. item.errors? .allErrors? .each { println messageSource.getMessage (it, null) }; También encontré un buen enlace que explica esto mejor http://johnrellis.blogspot.com/2010/02/retrieve-grails-domain-errors-from.html – MTH

+1

Burt, no parece como esto volverse más directo desde 2010. ¿Hay alguna razón por la cual los objetos de error individuales no tengan un campo 'mensaje' que devuelva el mensaje específico en lugar de tener que importar un bean y llamar a un método estático? –

Cuestiones relacionadas