(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