(Quick Reference)

9.1 Traits Provided by Grails - Reference Documentation

Authors: Graeme Rocher, Peter Ledbrook, Marc Palmer, Jeff Brown, Luke Daley, Burt Beckwith, Lari Hotari

Version: 3.1.1

Table of Contents

9.1 Traits Provided by Grails

Grails artefacts are automatically augmented with certain traits at compile time.

Domain Class Traits

Controller Traits

Interceptor Trait

Tag Library Trait

Service Trait

Below is a list of other traits provided by the framework. The javadocs provide more detail about methods and properties related to each trait.

TraitBrief Description
grails.web.api.WebAttributesCommon Web Attributes
grails.web.api.ServletAttributesServlet API Attributes
grails.web.databinding.DataBinderData Binding API
grails.artefact.controller.support.RequestForwarderRequest Forwarding API
grails.artefact.controller.support.ResponseRedirectorResponse Redirecting API
grails.artefact.controller.support.ResponseRendererResponse Rendering API
grails.validation.ValidateableValidation 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 } }