sitemesh應用Decorator模式,用filter截取request和response,把頁面組件head,content,banner結合爲一個完整的視圖。通常我們都是用include標籤在每個jsp頁面中來不斷的包含各種header, stylesheet, scripts and footer,現在,在sitemesh的幫助下,我們可以簡單完成不同請求的界面視圖。
1、在decorators.xml中設置模版
<?xml version="1.0" encoding="UTF-8"?>
<decorators defaultdir="/WEB-INF/views">
<!-- 默認裝飾頁面, 在需要裝飾的頁面增加<meta name="decorator" content="default"/> -->
<decorator name="blank" page="layouts/blank.jsp" />
<decorator name="default" page="layouts/default.jsp" />
<!-- CMS基礎主題裝飾頁面 -->
<decorator name="cms_default_basic" page="modules/cms/front/themes/basic/layouts/default.jsp" />
<decorator name="cms_default_weixin" page="modules/cms/front/themes/weixin/layouts/default.jsp" />
</decorators>
2、在頁面文件中引用模版<meta name="decorator" content="cms_default_${site.theme}"/>
<head>
<title>首頁</title>
<meta name="decorator" content="cms_default_${site.theme}"/>
<meta name="description" content="JeeSite ${site.description}" />
<meta name="keywords" content="JeeSite ${site.keywords}" />
</head>
其中content=“cms_default_${site.theme}”中的“cms_default_${site.theme}”對應“decorators.xml”配置文件中的“ name”屬性值。