SiteMesh - Freemarker Decorators
As of SiteMesh 2.0.2 Freemarker (.ftl) decorators are supported.Here is an example of how such a decorator might look like:
<#include "/includes/decorators/header.dec">
<h2>${title}</h2>
${head}
<img src="${base}/images/logo.gif" border="0">
<td valign="top" class="body">
<div class="header">
<span class="pagetitle">${title}</span>
</div>
${body}
</td>
<#include "/includes/decorators/footer.dec">
Installation
- Download Freemarker 2.3 (recommended) and copy it into
[web-app]/WEB-INF/lib. The SiteMesh distribution comes with freemarker.jar v2.3rc3 - Add the following to
[web-app]/WEB-INF/web.xmlwithin the<web-app>tag:
<servlet>
<servlet-name>sitemesh-freemarker</servlet-name>
<servlet-class>com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet</servlet-class>
<init-param>
<param-name>TemplatePath</param-name>
<param-value>/</param-value>
</init-param>
<init-param>
<param-name>default_encoding</param-name>
<param-value>ISO-8859-1</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>sitemesh-freemarker</servlet-name>
<url-pattern>*.dec</url-pattern>
</servlet-mapping>
- Modify
decorators.xmlto reference a .dec file.
<#include "/includes/decorators/header.dec">
<h2>${title}</h2>
${head}
<img src="${base}/images/logo.gif" border="0">
<td valign="top" class="body">
<div class="header">
<span class="pagetitle">${title}</span>
</div>
${body}
</td>
<#include "/includes/decorators/footer.dec">
Context
FreemarkerDecoratorServlet puts some things into the context object that you should be aware of:
Basic context attributes
${Session["user"]}
<#assign ww=JspTaglibs["/WEB-INF/webwork.tld"]>
<#assign ww=JspTaglibs["/WEB-INF/webwork.tld"]> ... <@ww.property value="myVar"/>
Sitemesh context attributes
| base | request.getContextPath() |
| title | Parsed page title (<title>...<title>) |
| head | Parsed page head |
| body | Parsed page body |
| page | SiteMesh's internal Page object |
