# 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, boolean outputResult = false) {
            def errorsList = extractErrors(attrs)
            def var = attrs.var
            def field = attrs.field        def errorList = []
            for (errors in errorsList) {
                if (field) {
                    if (errors.hasFieldErrors(field)) {
                        errorList += errors.getFieldErrors(field)
                    }
                }
                else {
                    errorList += errors.allErrors
                }
            }        for (error in errorList) {
                def result
                if (var) {
                    result = body([(var):error])
                }
                else {
                    result = body(error)
                }
                if (outputResult) {
                    out << result
                }
            }        null
        }