Does anybody know how I could get the fieldError
to print out in the example below.
for each item with an error, I would like to print custom error messages
You need access to the messageSource bean, e.g. with
def messageSource
in your controller or service. Then you can access the messages with
def locale = Locale.getDefault()
for (fieldErrors in bean.errors) {
for (error in fieldErrors.allErrors) {
String message = messageSource.getMessage(error, locale)
}
}
A somewhat simplier solution with a better performance would be;
MessageSource messageSource //Inject the messageSource class
e.errors.allErrors.each {
String message = messageSource.getMessage(it, Locale.default)
}
OR
If you want to deal only with field errors:
e.errors.fieldErrors.each {
String message = messageSource.getMessage("modified.invalid.validator.message", [it.field, 'message'] as Object[], Locale.default))
}
Where modified.invalid.validator.message
is the local string in your messages.properties
. In this particular example, this message reads something like...
modified.invalid.validator.message=Property [{0}] of [{1}] does not pass validation