教程:一分鐘完成SiteMesh Template模板組合

首先要感謝發明Markdown的傢伙,這東西真是好用吖!html

###SiteMesh概述 嗯,請自行Google之。git

###教程:一分鐘完成Template模板組合github

####1.內容頁面 簡單的示例內容頁面源代碼以下:web

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="theme" content="basic_theme" />
<title>應該是內容頁面</title>
</head>
<body>
	<h1>Weekdays</h1>
	<p>5:00pm - 10:00pm</p>
	<p>Weekends</p>
	<p>5:00pm - 10:00pm</p>
	<a href="${pageContext.request.contextPath}/download/decorators.jsp">down</a>
</body>
</html>

在源代碼中加入 <meta name="theme" content="basic_theme" /> 便可由SiteMesh自動完成Template模板裝配。app

####2.Runtime環境配置webapp

  • WEB-INF目錄下添加 sitemesh.xml,文件內容中除了指定 decoration-file 路徑的屬性需定製外,其餘內容基本不需更改。jsp

    <?xml version="1.0" encoding="UTF-8"?>
      <sitemesh>
      	<!-- 注意這一行指定的decorators.xml文件的存放位置 -->
      	<property name="decorators-file" value="/WEB-INF/themes/decorators.xml" />			
      	<excludes file="${decorators-file}" />
      	<page-parsers>
      		<parser content-type="text/html"
      			class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
      	</page-parsers>
      	<decorator-mappers>
      		<mapper class="com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper">
      			<!-- 注意這一行指定<meta/>標籤的 name 屬性做爲PageDecorator的識別符號 -->
      			<param name="property.1" value="meta.theme" />
      		</mapper>
      		<mapper
      			class="com.opensymphony.module.sitemesh.mapper.FrameSetDecoratorMapper" />
      		<mapper
      			class="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper">
      			<param name="decorator" value="printable" />
      			<param name="parameter.name" value="printable" />
      			<param name="parameter.value" value="true" />
      		</mapper>
      		<mapper class="com.opensymphony.module.sitemesh.mapper.FileDecoratorMapper" />
      		<mapper
      			class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
      			<param name="config" value="${decorators-file}" />
      		</mapper>
      	</decorator-mappers>
      </sitemesh>
  • WEB-INF/lib 目錄下加入 sitemesh-2.4.2.jarui

這個能夠本身在github上獲取最新版本,話說 sitemesh 3.0 好像無疾而終了?google

  • WEB-INF/web.xml 文件中加入。重點是 <url-pattern>*.jsp</url-pattern>,爲了防止SiteMesh隨意處理各種圖片、Javascript或StyleSheets資源,最好指定後綴或url路徑。url

    <filter>
      	<filter-name>sitemesh</filter-name>
      	<filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
      </filter>		
      <filter-mapping>
      	<filter-name>sitemesh</filter-name>
      	<url-pattern>*.jsp</url-pattern>		
           <dispatcher>FORWARD</dispatcher>   
           <dispatcher>REQUEST</dispatcher>  
      </filter-mapping>
  • 最後也是最重要的 decorators.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
      <decorators defaultdir="/WEB-INF/themes">
      	<decorator name="basic_theme" page="basic_theme.jsp" />
      </decorators>

這裏的<decorator name="basic_theme" .../>,對應你的內容文件中的<meta name="theme" content="basic_theme" />

額外說明的是:這裏使用Page模型組合Template模板,由於最簡單!

<decorator-mappers>
		<mapper class="com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper">
			<param name="property.1" value="meta.theme" />
		</mapper>
		...
相關文章
相關標籤/搜索