2010-07-16 4 views
14

Qualcuno sa come è possibile ottenere fieldError da stampare nell'esempio seguente.Visualizzazione degli errori di campo Grails

per ogni elemento con un errore, vorrei stampare messaggi di errore personalizzato che ho definito nei file di messages.properties

al momento tutto questo non fa altro che stampa i codici di errore predefiniti

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

Ho visto altri esempi in cui è possibile cercare un codice di errore per un campo es.

it.getFieldError('title').code 

ma vorrei convertire il messaggio predefinito nel mio nuovo messaggio di errore e stamparlo.

risposta

20

È necessario accedere al bean del messaggio, ad es. con

def messageSource 

nel controller o servizio. Quindi è possibile accedere ai messaggi con

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

put def MessageSource (nel controller o di servizio) Grazie questo ha funzionato. item.errors? .allErrors? .each { println messageSource.getMessage (it, null) }; ho anche trovato un buon collegamento che spiega questo meglio http://johnrellis.blogspot.com/2010/02/retrieve-grails-domain-errors-from.html – MTH

+1

Burt, non sembra come questo diventa più semplice dal 2010. C'è una ragione per cui i singoli oggetti di errore non hanno un campo 'message' che restituisce il messaggio specifico piuttosto che dover importare un bean e chiamare un metodo statico? –