調試環境:struts,Spring,jsp
第一步:安裝插件
在pom.xml文檔中增加相應依賴:
<dependency>
<groupId>org.sitemesh</groupId>
<artifactId>sitemesh</artifactId>
<version>2.4.2</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-sitemesh-plugin</artifactId>
<version>2.3.1.2</version>
</dependency>
第二步:配置監聽
在web.xml文檔中,增加過濾器
<!-- sitemesh 裝飾器 -->
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
</filter>
<filter-name>sitemesh</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
第三部:配置裝飾器
在WEB-INF文件夾下,新建裝飾器配置文檔:decorators.xml
文檔內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE decorators PUBLIC "-//OpenSymphony//SiteMesh 1.5 Decorators//EN" "
<decorators defaultdir="/decorators"><!--文件夾可以修改-->
<!-- 放棄裝飾部分 -->
<excludes>
<pattern>/40*.jsp</pattern>
<pattern>/*ajax=true*</pattern>
<pattern>/scripts/dojo/*</pattern>
<pattern>/struts/dojo/*</pattern>
<pattern>/resources/*</pattern>
</excludes>
<!--裝飾名稱,可以設置多個-->
<decorator name="default" page="default.jsp">
<pattern>*</pattern>
</decorator>
</decorators>
第四步 在WEB-INF文件夾下,新建sitemesh配置文檔:sitemesh.xml
<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"/>
<parser content-type="text/html;charset=ISO-8859-1" 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">指定的文件下,新加模板:default.jsp
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="<%@ taglib uri="<html xmlns="<head>
<%@ include file="/common/meta.jsp"%>
<title><decorator:title /> | Demo</title>
<decorator:head />
</head>
<body
<decorator:getProperty property="body.id" writeEntireProperty="true"/>
<decorator:getProperty property="body.class" writeEntireProperty="true"/>>
<div id="page">
<div id="header" class="clearfix">
<jsp:include page="/common/header.jsp" />
</div>
<div id="content" class="clearfix">
<div id="main">
<%@ include file="/common/messages.jsp"%>
<h1>
<decorator:getProperty property="meta.heading" />
</h1>
<decorator:body />
</div>
<c:set var="currentMenu" scope="request">
<decorator:getProperty property="meta.menu" />
</c:set>
<div id="nav">
<div class="wrapper"></div>
<hr />
</div>
<!-- end nav -->
</div>
<div id="footer" class="clearfix">
<jsp:include page="/common/footer.jsp" />
</div>
</div>
</body>
</html>
第五部:測試
期待正確的結果。