引言:
相信通过前面一个示例,就大致知道Tiles2这个框架的一个结构了。但Tile2的作用还并没有完全的体现出来呢?它的强大之处出乎了我一开始的预料了。
而这一篇,我想写的便是Tiles2的配置文件。Tiles2的强大,可以说,很大的一部分在于配置文件中的。
一、definition 标签
这是Tiles2的定义标签,每一个设置开始都需要它来做一个定义,如:
<definition name="layout" template="layouts/layout.jsp"> <put-attribute name="title" value="tiles2示例"/> <put-attribute name="header" value="/views/layout/header.jsp"/> <put-attribute name="body" value="/views/layout/body.jsp"/> <put-attribute name="footer" value="/views/layout/footer.jsp"/> </definition>
template是为模版类型。
在这里可以变为一个模版。并在definition中注入attribute(属性)
在这里,definition如同一个java类一样,可能被继承和重写。
继承性
<definition name="sublayout" template="layouts/sublayout.jsp" extend="layout"> <put-attribute name="title" value="tiles2示例2"/> <put-attribute name="menu" value="/views/layout/menu.jsp"/> <put-attribute name="body" value="/views/layout/subbody.jsp"/> <put-attribute name="footer" value="/views/layout/footer.jsp"/> </definition>
这样,名为sublayout继承了layout的所有属性.
menu 为新增加的属性
title,body,footer 为重写的属性
header 为继承的属性
如何attribute没有被指定value的值,刚可以理解为是一个abstract definition, 可以作为一个基本的definition来被继承,如果在页面直接去取这个definition的属性的,刚会在运行时出现丢失该属性的情况。
在这里面我们看到了,template=""指向了一个页面,这个就是该definition所指向的的页面了。在里这个页里面,可以注入该definition中包含的attribute。
注入的方式为:
<tiles:insertAttribute name="header" />
当然在这里jsp页面需要引入:
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
二、attribute 标签
attribute标签 有三种类型:
String: 可以直接指向一个字符串;
template: 可以指向一个页面模板;
definition: 可以指向一个定义的名字,指向一个页面;
这是设置definition的各个属性,也就是注意对应页面内所对应的value值(即块内容)