Configuration
We need to add the sitemesh filter configuration in the web.xml file. We apply the filter to all pages:<filter> <filter-name>sitemesh</filter-name> <filter-class> com.opensymphony.module.sitemesh.filter.PageFilter </filter-class> </filter> <filter-mapping> <filter-name>sitemesh</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
<sitemesh> <property name="decorators-file" value="/WEB-INF/decorators.xml"/> <excludes file="${decorators-file}"/> <page-parsers> <parser default="true" class="com.opensymphony.module.sitemesh.parser.FastPageParser"/> <parser content-type="text/html" class="com.opensymphony.module.sitemesh.parser.FastPageParser"/> </page-parsers> <decorator-mappers> <mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper"> <param name="config" value="${decorators-file}"/> </mapper> </decorator-mappers> </sitemesh>
<decorators defaultdir="/decorators"> <decorator name="default" page="MyDecorator.jsp"> <pattern>/*</pattern> </decorator> </decorators>
Decorator
We define our decorator JSP page, which adds a default header and footer. It also retrieves the decorated document's title, head and body:<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %> <!DOCTYPE html> <html> <head> <title><decorator:title default="SiteMesh Integration"/></title> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <decorator:head/> </head> <body> <div id="header"> <h1>Header Added By Sitemesh</h1> </div> <div id="content"> <decorator:body/> </div> <div id="Footer"> <h2>Some Copyright Added By Sitemesh</h2> </div> </body> </html>
Pages To Decorate
We define a simple Home.jsp page:<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Home Page !!!</title> </head> <body> This is the home page content !!!<br /><br /> <a href="<c:url value='/AnotherPage'/>">Another Page</a> </body> </html>
<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Another Page !!!</title> </head> <body> This is the content of another page !!! </body> </html>
Maven Dependency
We need the following dependency:<dependency> <groupId>opensymphony</groupId> <artifactId>sitemesh</artifactId> <version>2.4.2</version> </dependency>
Running The Example
Once compiled, the example can be run with mvn tomcat:run. Then, browse: http://localhost:8282/spring-sitemesh-integration/.The home page will display:
The other page displays:
More Spring related posts here.
No comments:
Post a Comment