Tiles提供了一种框架,供你定义和动态填充页面布局。每个页面布局就是一个定义了模板框架(或轮廓)并用占位符表示应该填充内容的位置的jsp。运行时tiles用其相关内容代替占位符,创建一个完整的页面和独特的布局实例。为了实现这个目标,Tiles使用了概念:定义和属性。
一个Tiles定义创建一条内容,并可以通过使用定义的名称将其插入JSP。每个定义有名称(或标识符),布局JSP和与定义相关联的一系列属性组成。一旦创建,该定义就可以包含在页面中或作为struts forward的目标(此为最常见的情况)。为了简化定义和属性的使用,Tiles使用XML配置文件(tiles-defs.xml)存储定义。Tiles还为创建定义和属性提供了JSP标记库,此外,还使用Tiles标记库将属性插入JSP
使用Tiles
1 启动Tiles插件。
2 创建Tiles定义。
3 创建布局JSP并使用Tiles标记库。
4 创建内容JSP以填充布局JSP。
5 使用Tiles定义。
1 启动Tiles插件
要启动并使用Tiles,需要将以下<plug-in>定义添加到应用程序的struts-config.xml文件中:
<plug-in className="org.apache.struts.tiles.TilesPlugin" >
<!-- Path to XML definition file -->
<set-property property="definitions-config"
value="/WEB-INF/config/tiles-defs.xml" />
</plug-in>
该定义使struts为应用程序加载并初始化Tiles插件。
2 创建Tiles定义
基于XML配置文件的定义和属性
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
<!--
colimas tiles difinitions
Created by:Zhao Lei
Created date:2005/06/15
Modified date:2005/09/05
-->
<tiles-definitions>
<definition name="base-definition" path="/pages/mainlayout.jsp">
<put name="header" value="/pages/header.jsp" />
<put name="footer" value="/pages/footer.jsp" />
<put name="menu" value="" />
<put name="data" value=""/>
</definition>
<definition name="extends-definition" extends="base-definition">
<put name="navigator" value="" />
</definition>
<!--index-->
<definition name="index-definition" extends="base-definition" >
<put name="data" value="/pages/indexcon.jsp" />
</definition>
</tiles-definitions>
3 创建布局JSP并使用Tiles标记库
/pages/mainlayout.jsp
<%@ taglib uri="/tags/struts-tiles" prefix="tiles"%>
<body>
<tiles:insert attribute="header"/>
<tiles:insert attribute="data"/>
<tiles:insert attribute="footer"/>
</body>
4 创建内容JSP
/pages/header.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean"%>
<%@ taglib uri="/tags/struts-html" prefix="html"%>
<%@ taglib uri="/tags/struts-logic" prefix="logic"%>
<logic:present name="user">
<H3>Welcome <bean:write name="LoginForm" property="userID" />!</H3>
</logic:present>
<logic:notPresent scope="session" name="user">
<H3>Welcome Colimas!</H3>
</logic:notPresent>
<html:form action="/SelectLanguageAction.do">
<html:select property="language">
<html:option value="0">中国语</html:option>
<html:option value="1">日本語</html:option>
<html:option value="2">English</html:option>
</html:select>
<html:submit>Select</html:submit>
</html:form>
/pages/footer.jsp
Copyright c 2005 Nova Component System | All rights reserved <a href="contactus.htm">Contact Us</a> <a href="legal.htm">Legal</a> | <a href="policy.htm">Privacy Policy</a>
/pages/indexcon.jsp
<%@ taglib uri="/tags/struts-bean" prefix="bean"%>
<%@ taglib uri="/tags/struts-html" prefix="html"%>
<%@ taglib uri="/tags/struts-logic" prefix="logic"%>
<html:form action="/LoginAction.do">
<p><bean:message key="index.jsp.userid"/><input type="text" name="userID" value="tyrone1979" /><br>
<bean:message key="index.jsp.pass"/><input type="password" name="password" value="123445"/><br>
<html:submit><bean:message key="index.jsp.login"/></html:submit>
</p>
</html:form>
<logic:present name="user">
<html:form action