Atleap没有像AppFuse那样使用sitemesh分离显示格式和布局,而是采用了struts的Tiles.
运行用户将内容和布局分离
模板就是一个使用JSP自定义标记符库描述页面布局的JSP页面。
模板充当的定义的角色,它定义了应用程序的外观而不指定内容。在运行期,用户可以将内容插入到模板页面,并且,一个或多个页面可以使用同一个模板。
tiles-config.xml时定义配置文件
<!-- Core layout -->
<!—definition标记用来创建一个tile作为一个定义的bean,在要求的scope内,该
Bean以指定的id保存
-->
<definition name=
".coreLayout" path="/WEB-INF/pages/layouts/core/coreLayout.jsp">
<!—put标记将属性传递给一个tile组件-->
<put name="titleKey"/>
<put name="content" />
<!—pubList创建一个列表,该列表作为属性传递给
列表元素使用add标记添加。Value是用来添加的值,可以是String或Object。
-->
<putList name="leftLayoutBlocksList">
<add value=".loginForm" />
<add value=".core.menu" />
</putList>
<putList name="rightLayoutBlocksList">
<add value=".searchForm" />
<add value=".switchLocaleForm" />
<add value=".editModeForm" />
</putList>
<!-- Default Javascript Files -->
<putList name="layoutScripts">
<add value="/scripts/core/klayers.js"/>
<add value="/scripts/core/global.jsp"/>
<add value="/scripts/core/validator.jsp"/>
<add value="/scripts/core/helptip.js"/>
<add value="/scripts/core/luceneQueryValidator.jsp"/>
</putList>
<!-- Default Stylesheet Files -->
<putList name="layoutStyles">
<add value="/styles/core/core.css"/>
<add value="/styles/core/helptip.css"/>
</putList>
</definition>
以下语句声明在页面使用一个属性值
<tiles:useAttribute id="leftLayoutBlocks" name="leftLayoutBlocksList"
classname="java.util.List" ignore="true"/>
以下语句声明创建一个组件定义
<tiles:insert definition="${layoutBlock}" />
tiles:insert插入一个tile组件,insert标记负责将内容插入到一个页面中。
<c:forEach items="${leftLayoutBlocks}" var="layoutBlock">
<tiles:insert definition="${layoutBlock}" />
</c:forEach>
以下语句获取由put标记放在请求作用域的内容
<tiles:get name="content" />