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

## Source

Show Source

    def pageProperty = { attrs ->
            if (!attrs.name) {
                throwTagError("Tag [pageProperty] is missing required attribute [name]")
            }        def propertyName = attrs.name
            def htmlPage = getPage()
            def propertyValue = null        if (htmlPage instanceof GSPSitemeshPage) {
                // check if there is an component content buffer
                propertyValue = htmlPage.getContentBuffer(propertyName)
            }        if (!propertyValue) {
                propertyValue = htmlPage.getProperty(propertyName)
            }        if (!propertyValue) {
                propertyValue = attrs.'default'
            }        if (propertyValue) {
                if (attrs.writeEntireProperty) {
                    out << ' '
                    out << propertyName.substring(propertyName.lastIndexOf('.') + 1)
                    out << "=\""
                    out << propertyValue
                    out << "\""
                }
                else {
                    out << propertyValue
                }
            }
        }