(Quick Reference) # 9.1 Traits Provided by Grails Version: 3.2.8 ## Table of Contents ## 9.1 Traits Provided by Grails Grails artefacts are automatically augmented with certain traits at compile time. #### Domain Class Traits grails.artefact.DomainClass grails.web.databinding.WebDataBinding org.grails.datastore.gorm.GormEntity org.grails.datastore.gorm.GormValidateable #### Controller Traits grails.artefact.gsp.TagLibraryInvoker grails.artefact.AsyncController grails.artefact.controller.RestResponder grails.artefact.Controller #### Interceptor Trait grails.artefact.Interceptor #### Tag Library Trait grails.artefact.TagLibrary #### Service Trait grails.artefact.Service Below is a list of other traits provided by the framework. The javadocs provide more detail about methods and properties related to each trait.
Trait | Brief Description
--- | ---
grails.web.api.WebAttributes | Common Web Attributes
grails.web.api.ServletAttributes | Servlet API Attributes
grails.web.databinding.DataBinder | Data Binding API
grails.artefact.controller.support.RequestForwarder | Request Forwarding API
grails.artefact.controller.support.ResponseRedirector | Response Redirecting API
grails.artefact.controller.support.ResponseRenderer | Response Rendering API
grails.validation.Validateable | Validation API
## 9.1.1 WebAttributes Trait Example WebAttributes is one of the traits provided by the framework. Any Groovy class may implement this trait to inherit all of the properties and behaviors provided by the trait. src/main/groovy/demo/Helper.groovy
    package demo

    import grails.web.api.WebAttributes

    class Helper implements WebAttributes {

        List<String> getControllerNames() {
            // There is no need to pass grailsApplication as an argument
            // or otherwise inject the grailsApplication property.  The
            // WebAttributes trait provides access to grailsApplication.
            grailsApplication.getArtefacts('Controller')*.name
        }
    }
The traits are compatible with static compilation…​ src/main/groovy/demo/Helper.groovy
    package demo

    import grails.web.api.WebAttributes
    import groovy.transform.CompileStatic

    @CompileStatic
    class Helper implements WebAttributes {

        List<String> getControllerNames() {
            // There is no need to pass grailsApplication as an argument
            // or otherwise inject the grailsApplication property.  The
            // WebAttributes trait provides access to grailsApplication.
            grailsApplication.getArtefacts('Controller')*.name
        }
    }
| Quick Reference (hide)