继前一篇所写的Tiles的配置信息中,具有继承性 的这一特性,确实给我们带来了不少的方便。
但除此之后,Tiles2给我们的,还有更多好的惊喜呢。
1、List Attribute 列表属性
1.1简单的例子
配置:
使用<put-list-attribute>标签
<definition name="myapp.homepage.body" template="/layouts/variable_rows.jsp">
<put-list-attribute name="items">
<add-attribute value="/tiles/banner.jsp" />
<add-attribute value="/tiles/common_menu.jsp" />
<add-attribute value="/tiles/credits.jsp" />
</put-list-attribute>
</definition>
template 对应的 jsp中:
使用c标签中的进行遍历。
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<tiles:useAttribute id="list" name="items" classname="java.util.List" />
<c:forEach var="item" items="${list}">
<tiles:insertAttribute value="${item}" flush="true" />
<br/>
</c:forEach>
1.2 属性列表的继承
<definition name="myapp.homepage.body" template="/layouts/variable_rows.jsp">
<put-list-attribute name="items">
<add-attribute value="/tiles/banner.jsp" />
<add-attribute value="/tiles/common_menu.jsp" />
<add-attribute value="/tiles/credits.jsp" />
</put-list-attribute>
</definition>
<definition name="myapp.homepage.body.extended" extends="myapp.homepage.body">
<put-list-attribute name="items" inherit="true">
<add-attribute value="/tiles/greetings.jsp" />
</put-list-attribute>
</definition>
这就实现在列表属性的继承,这里,在引入的地方所包含的就有着:
* /tiles/banner.jsp
* /tiles/common_menu.jsp
* /tiles/credits.jsp
* /tiles/greetings.jsp
2、Tiles2 运行合成
当工程在执行的时候,允许在jsp中自行的去修改<definition>或属性等,看下面例子:
2.1 jsp中进行动态的往definition中加入属性
<tiles:insertTemplate template="/layouts/classic.jsp">
<tiles:putAttribute name="title" value="Tiles tutorial homepage" />
<tiles:putAttribute name="header" value="/tiles/banner.jsp" />
<tiles:putAttribute name="menu" value="/tiles/common_menu.jsp" />
<tiles:putAttribute name="body">
<tiles:insertTemplate template="/layouts/variable_rows.jsp">
<tiles:putListAttribute name="items">
<tiles:addAttribute value="/tiles/banner.jsp" />
<tiles:addAttribute value="/tiles/common_menu.jsp" />
<tiles:addAttribute value="/tiles/credits.jsp" />
</tiles:putListAttribute>
</tiles:insertTemplate>
</tiles:putAttribute
<tiles:putAttribute name="footer" value="/tiles/credits.jsp" />
</tiles:insertTemplate>
2.2 插入临时修改的definition
这在jsp中,临时对该definition进行某些属性的重写
<tiles:insertDefinition name="myapp.homepage.customer" template="/layouts/alternative_layout.jsp"> <tiles:putAttribute name="menu" value="/tiles/common_menu_for_customers.jsp" /> </tiles:insertDefinition>
2.3definition的临时创建和使用
在jsp中
<tiles:definition name="myapp.homepage.customer" extends="myapp.homepage"> <tiles:putAttribute name="menu" value="/tiles/common_menu_for_customers.jsp" /> </tiles:definition> <tiles:insertDefinition name="myapp.homepage.customer" />
3、使用API对Tiles2容器管理(还未理解好,碰到取不到Container的问题)
TilesAttributeContext attributeContext = container.getAttributeContext(request,response);
TilesAttributeContext attributeContext = container.startContext(request,
response);
//这个Context还不知道怎么取到,程序编译不过。
本文深入探讨了Tiles2框架的高级特性,包括列表属性的使用和继承、运行时合成及API管理等内容。通过实例展示了如何在JSP页面中动态修改定义和属性,以及临时创建和使用定义。
2610

被折叠的 条评论
为什么被折叠?



