# 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
    		}
    	}