include
Purpose
Includes the response of another controller/action or view in the current response
Examples
Example controller for an application called "shop":class BookController {
def list = { [ books: Book.list( params ) ] }
def show = { [ book : Book.get( params['id'] ) ] }
}
Example usages for above controller:<g:include action="show" id="1" />
<g:include action="show" id="${currentBook.id}" />
<g:include controller="book" />
<g:include controller="book" action="list" />
<g:include action="list" params="[sort:'title',order:'asc',author:currentBook.author]" />
Example as a method call in controllers, tag libraries or GSP:def content = g.include(action:'list',controller:'book')
Description
Attributes
action
(optional) - the name of the action to use in the include
controller
(optional) - the name of the controller to use in the include
id
(optional) - the id to use in the include
view
(optional) - The name of the view to use in the include
params
(optional) - a map containing request parameters
model
(optional) - Any request attributes (the model) to pass to the view to be included
Source
Show Source
def include = { attrs, body ->
if(attrs.action && !attrs.controller) {
def controller = request?.getAttribute(GrailsApplicationAttributes.CONTROLLER)
def controllerName = controller?.getProperty(ControllerDynamicMethods.CONTROLLER_NAME_PROPERTY)
attrs.controller = controllerName
}
if(attrs.controller || attrs.view){
def mapping = new ForwardUrlMappingInfo(controller:attrs.controller,
action:attrs.action,
view:attrs.view,
id:attrs.id,
params:attrs.params) out << WebUtils.includeForUrlMappingInfo(request,response,mapping, attrs.model ?: [:] )?.content
}
}