fieldValue 
Purpose
This tag will inspect a bean which has been the subject of data binding and obtain the value of the field either from the originally submitted value contained within the bean's errors object populating during data binding or from the value of a bean's property. Once the value is obtained it will be automatically HTML encoded.
Examples
<g:fieldValue bean="${book}" field="title" />// or as a method
<input type="text" value="${fieldValue(bean:book,field:'title')}" />Description
Attributes
bean (required) - The bean instance to inspect 
field (required) - The name of the field to obtain the value of 
Source
Show Source
def fieldValue = { attrs, body ->
        def bean = attrs.bean
        def field = attrs.field?.toString()
        if (bean && field) {
            if (bean.metaClass.hasProperty(bean,'errors')) {
                Errors errors = bean.errors
                def rejectedValue = errors?.getFieldError(field)?.rejectedValue
                if (rejectedValue == null) {
                    rejectedValue = bean
                    for (String fieldPart in field.split("\\.")) {
                        rejectedValue = rejectedValue?."$fieldPart"
                    }
                }
                if (rejectedValue != null) {
                    out << formatValue(rejectedValue, field)
                }
            }
            else {
                def rejectedValue = bean
                for (String fieldPart in field.split("\\.")) {
                    rejectedValue = rejectedValue?."$fieldPart"
                }
                if (rejectedValue != null) {
                    out << formatValue(rejectedValue, field)
                }
            }
        }
    }    def extractErrors(attrs) {
        def model = attrs.model
        def checkList = []
        if (attrs.containsKey('bean')) {
            if (attrs.bean) {
                checkList << attrs.bean
            }
        }
        else if (attrs.containsKey('model')) {
            if (model) {
                checkList = model.findAll {it.value?.errors instanceof Errors}.collect {it.value}
            }
        }
        else {
            for (attributeName in request.attributeNames) {
                def ra = request[attributeName]
                if (ra) {
                    def mc = GroovySystem.metaClassRegistry.getMetaClass(ra.getClass())
                    if (ra instanceof Errors && !checkList.contains(ra)) {
                        checkList << ra
                    }
                    else if (mc.hasProperty(ra, 'errors') && ra.errors instanceof Errors && !checkList.contains(ra.errors)) {
                        checkList << ra.errors
                    }
                }
            }
        }        def resultErrorsList = []        for (i in checkList) {
            def errors = null
            if (i instanceof Errors) {
                errors = i
            }
            else {
                def mc = GroovySystem.metaClassRegistry.getMetaClass(i.getClass())
                if (mc.hasProperty(i, 'errors')) {
                    errors = i.errors
                }
            }
            if (errors?.hasErrors()) {
                // if the 'field' attribute is not provided then we should output a body,
                // otherwise we should check for field-specific errors
                if (!attrs.field || errors.hasFieldErrors(attrs.field)) {
                    resultErrorsList << errors
                }
            }
        }        resultErrorsList
    }