# hasErrors

## Purpose

Checks whether a bean, request scope, or model reference has any errors and if it does invokes the body of the tag. Typically used in conjunction with either eachError or renderErrors

## Examples

Checks whether there are any errors for any bean throughout the request scope:

    <g:hasErrors>
        <g:eachError><p>${it.defaultMessage}</p></g:eachError>
    </g:hasErrors>

Checks whether there are any errors for the specified bean

    <g:hasErrors bean="${book}">
        <g:eachError><p>${it.defaultMessage}</p></g:eachError>
    </g:hasErrors>

Checks whether there are any errors for the field "title" of the specified "book" bean:

    <g:hasErrors bean="${book}" field="title">
        <div class="errors">
           <g:renderErrors bean="${book}" field="title" as="list" />
        </div>
    </g:hasErrors>

As a method call in GSP only. In this case we check for a field error on a particular field and set a CSS class on the surround div thus allowing us to highlight the error with a red border for example:

    <div class="prop ${hasErrors(bean:user,field:'login', 'errors')}">
        <label for="login"><input type="text" name="login" />
    </div>

Checking for errors inside a nested object:

    <div class="prop ${hasErrors(bean:parent, field:'child.name', 'errors')}">
        <label for="child.name"><input type="text" name="child.name" value="${fieldValue(bean:parent,field:'child.name'} />
    </div>

## Description

Attributes

- `bean` (optional) - The bean to check for errors
- `model` (optional) - The name of the model reference to check for errors
- `field` (optional) - Check if a field of the bean or model reference has errors

## Source

Show Source

    def hasErrors = { attrs, body ->
            def errorsList = extractErrors(attrs)
            if (errorsList) {
                out << body()
            }
        }