eachError
Purpose
Loops through each error of the specified bean or model. If no arguments are specified it will go through all model attributes and check for errors.
Examples
Loop through each error in the "book" bean:<g:eachError bean="${book}">
<li>${it}</li>
</g:eachError>
Loop through each error in the title field of the "book" bean:<g:eachError bean="${book}" field="title">
<li>${it}</li>
</g:eachError>
Loop through each error in model:<g:eachError model="${[book1:book1,book2:book2]}" field="title">
<li>${it}</li>
</g:eachError>
Loop through each error displaying its i18n message:<g:eachError bean="${book}">
<li><g:message error="${it}"/></li>
</g:eachError>
Description
Attributes
bean
(optional) - The instance of the bean to check for errors
model
(optional) - The name of model, an map instance, to check for errors
field
(optional) - The field within the bean or model to check for errors for
Source
Show Source
def eachError = { attrs, body ->
eachErrorInternal(attrs,body,true)
} def eachErrorInternal(attrs, body, outputResult=false) {
def errorsList = extractErrors(attrs)
def var = attrs.var
def field = attrs['field'] def errorList = []
errorsList.each { errors ->
if(field) {
if(errors.hasFieldErrors(field)) {
errorList += errors.getFieldErrors(field)
}
} else {
errorList += errors.allErrors
}
} errorList.each { error ->
def result
if(var) {
result=body([(var):error])
} else {
result=body(error)
}
if(outputResult) {
out << result
}
} null
}