(Quick Reference)

render

Purpose

Applies an inbuilt or user-defined Groovy template against a model so that templates can be shared and reused

Examples

Example domain class:

class Book {
    String title
    String author
}

Example template:

<p>${it.title}</p>
<p>${it.author}</p>

This template can now be reused whether you have a List of Books or a single Book. For a List the template will be repeated for each instance:

<g:render template="displaybook" collection="${books}" />

and for a single instance the template is rendered once:

<g:render template="displaybook" bean="${book}" />

You can also create a template for a particular type of model. For example this template:

<p>${book.title}</p>
<p>${author.fullName}</p>

could be used with this model:

<g:render template="displaybook" model="['book':book,'author':author]" />

The disadvantage of this approach is that the template is less reusable.

It is also possible to define the name of the variable to be used by the template in the render tag:

Example template:

<p>${myBook.title}</p>
<p>${myBook.author}</p>

Example render tag call for the above template

<g:render template="displaybook" collection="${books}" var="myBook"/>

Description

Note that if the value of the template attribute starts with a '/' it will be resolved relative to the views directory. This is useful for sharing templates between views. Without the leading '/' it will be first be resolved relative to the current controller’s view directory then, failing that, the top level views directory. In either case the template file must be named with a leading underscore ('_') but referenced in the template attribute without that underscore or the '.gsp' suffix.

Attributes

  • contextPath (optional) - the context path to use (relative to the application context path). Defaults to "" or path to the plugin for a plugin view or template.

  • template (required) - The name of the template to apply

  • bean (optional) - The bean to apply the template against

  • model (optional) - The model to apply the template against as a java.util.Map

  • collection (optional) - A collection of model objects to apply the template to

  • var (optional) - The variable name of the bean to be referenced in the template

  • plugin (optional) - The plugin to look for the template in

See {controllersRef}/render.html[render] in the Grails user guide for more information.