(Quick Reference)

pageProperty

Purpose

Used in layouts to output the contents a property of the decorated page. Equivalent to the SiteMesh <decorator:getProperty/> tag.

Examples

Example decorated page:

<html>
   <head>
        <meta name="layout" content="myLayout" />
        <script src="myscript.js" />
   </head>
   <body onload="alert('hello');">Page to be decorated</body>
</html>
Example decorator layout:

<html>
   <head>
        <script src="global.js" />
        <g:layoutHead />
   </head>
   <body onload="${pageProperty(name:'body.onload')}"><g:layoutBody /></body>
</html>
Results in:

<html>
   <head>
        <script src="global.js" />
        <script src="myscript.js" />
   </head>
   <body onload="alert('hello');">Page to be decorated</body>
</html>

Another example with more options used is below:

We have a layout gsp file container.gsp

<section>
    <header>
      <g:pageProperty name="page.title"/>
    </header>

<section> <g:layoutBody /> </section> </section>

The layout is applied to a sub-part of the gsp file using applyLayout tag.

<html>
<head>
    <title>Title 1</title>
</head>

<body> <section class="major-part left-part"> <g:applyLayout name="container"> <content tag="title"> Title 2 </content> Some other things </g:applyLayout> </section> </body> </html>

This will result in the below page.

<html>
<head>
    <title>Title 1</title>
</head>

<body> <section class="major-part left-part"> <section> <header> Title 2 </header>

<section> Some other things </section> </section> </section> </body> </html>

Notice how "Title 2" from the content tag was picked via page.title and the rest was picked up by <g:layoutBody />. You can have any number of such content tags with different tag values (e.g. tag="grails") and then use them in your layouts via the pageProperty tag.

Description

Attributes

  • name (required) - The property name
  • default (optional) - The default value to use if the property is null. (defaults to null)
  • writeEntireProperty (optional) - If true, writes the property in the form 'foo = "bar"', otherwise renders 'bar'. (defaults to false)

Source