2010-07-16 4 views
14

Weiß jemand, wie ich das fieldError im folgenden Beispiel ausdrucken konnte.Grails Feldfehler anzeigen

für jedes Element mit einem Fehler, würde Ich mag benutzerdefinierte Fehlermeldungen drucken, die ich in der messages.properties

Datei definiert habe

im Moment alles tut, ist Druck des Standard-Fehlercodes

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

Ich habe andere Beispiele gesehen, wo Sie einen Fehlercode für ein Feld zB suchen können

aber ich möchte die Standardnachricht in meine neue Fehlermeldung konvertieren und diese drucken.

Antwort

20

Sie benötigen Zugriff auf die messageSource-Bean, z. mit

def messageSource 

in Ihrem Controller oder Service. Dann können Sie die Nachrichten zugreifen mit

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

put def Message (in der Steuerung oder Dienstleistung) Dank dieser gearbeitet. item.errors? .allErrors? .each { println messageSource.getMessage (it, null) }; Ich fand auch eine gute Verbindung, die diese besser http://johnrellis.blogspot.com/2010/02/retrieve-grails-domain-errors-from.html – MTH

+1

Burt erklärt, es nicht so scheint Seit 2010 wird es einfacher. Gibt es einen Grund, dass die einzelnen Fehlerobjekte kein "Nachrichten" -Feld haben, das die spezifische Nachricht zurückgibt, anstatt eine Bean zu importieren und eine statische Methode aufzurufen? –