要使用decorator标签需要下载sitemesh.jar包.
decorator标签可以轻松解决页面布局的问题,轻松是因为相比<include>标签(需要在每个页面都用他引入JSP)而 言,decorator标签的使用很简便,只需要在配置文件decorators.xml进行相应的配置再加上一个装饰器(其实就是一个JSP页面)即 可.
加上强大的过滤器,你可以装饰何一个被打开的页面,而不用像以前一样加工每一个JSP页面。
装饰器例子:
<excludes>
<pattern>/Login*</pattern></excludes>
可以定义JSP页面,也可以定义为URL请求!
<decorator name=“pop" page=“PopPage.jsp">
<pattern>/showinfo.jsp*</pattern>
<pattern>
/myModule/GreatWallDetailAction.do*
</pattern>
</decorator>
<excludes> 标签代表不对定义的请求名进行装饰
<decorator> 标签代表对定义的请求名进行相应的装饰
详细:decorators.XML
<!-- defaultdir指定装饰器文件所在的路径 --> <decorators defaultdir="/decorators"> <!-- 在excludes元素下指定的页面将不会由SiteMesh装饰 --> <excludes> <pattern>/login.jsp</pattern> <pattern>/sessionTimeout.jsp</pattern> <pattern>/*.action*</pattern> <pattern>/pages/getMenu.jsp</pattern> </excludes> <!-- 创建名为main的装饰器,装饰器页面为main.jsp,用于装饰pattern指定的URL页面 --> <decorator name="main" page="main.jsp"> <pattern>/*</pattern> </decorator> <!-- 定义一个装饰器,该装饰器默认不装饰任何页面 --> <!-- <decorator name="panel" page="panel.jsp"/>-->
main.JSP:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%> <%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title></title> </head> <body> <div id="mainContainer-back"> <!-- header --> <%@include file="/common/backHeader.jsp"%> <!-- leftBar --> <div id="mainContent-back"> <div class="content"> <decorator:body/> </div> </div> <!-- footer --> <%@include file="/common/backFooter.jsp"%> </div> </body> </html>