Struts Tiles标签学习笔记:
1,Tiles可以不使用配置文件,就比jsp:include强一点,差别就是能够传参数.
语法分两个部分:
模版里A.jsp <tiles:insert attribute="模版变量名menu"/>
使用模版的页面B.jsp <tiles:insert page="A.jsp">
<tiles:put name="模版变量名menu" value="xx.jsp"/>
</tiles:insert>
2, Tiles 使用配制文件,文件里定义的叫"tiles组件" 简称"组件".
语法:
配置文件里tiles-defs.xml
<definition name="com1" path="模版页面A.jsp">
<put name="menu" value="xx.jsp"/>
</definition>
这个com1组件可以拿来用.
使用模版的页面B.jsp: <tiles:insert definition="com1"/>
另外com1也可以直接在struts-config.xml中当作普通页面使用.例如,
<action forward="com1" path="/test" />
3,Tiles基本上都是使用文件定义组件这种方式.写组件文件比较烦燥,Tiles就弄了几个小方法来简化
此过程.第一个方法就是组件的参数可以是组件.组件1的参数可以是组件2,组件2的参数可以是
组件3,组件3的参数..4..5..6,子子孙孙无穷尽也.例如:
<definition name="com1" page="A.jsp">
<put name="menu" value="com2" type="definition"/>
<put name="header" value="com3" />
<put name="footer" value="com4" />
</definition>
写不写type="definition"无所谓,com2,com3,com4找不到对应文件,就到组件里找.他们必须
也在组件文件里定义好:
<definition name="com2" value="xx.jsp">
<put name="com2_var" value="com5"/>
</definition>
呵呵,把一些常用的东东拿出来可以重复使用.就是为了这点方便.
4,还有个省劲地写组件文件的方法,组件继承.同样可以子子孙孙无穷尽也,例如Com6继承Com5,Com5继承Com1,
Com1继承Com7....
语法如下:
<definition name="Com6" extends="Com5">
<put name="menu" name="需要改动的页面"/>
</definition>
这样就省得写Com5组件的一堆<put>和<definition page=..>了.只需要把要修改的地方换换就行了.
5,另外模版还可以定义资源串,这个串不是写死的,而是以参数的方式传入模版的.
语法如下:
模版文件A.jsp中:
<tiles:importAttibute name="自定义变量名aaa"/>
<bean:write name="自定义变量名aaa"/>
组件文件中:
<definition name="comxxx" page="A.jsp">
<put name="自定义变量名aaa" value="ApplicationResource.properties里的key值"/>
</definition>
这样在使用组建的文件中,B.jsp
<tiles:insert definition="comxxx"/>就能看到资源文件中的key值对应的Value了.
好了,这下可以看到向模版文件中不仅可以传递jsp页面,com组件,还可以传key值,下面看一个可以传list的写法
6,向模版传递list
组件文件中:
<definition ...
<putlist name="items">
<item link="xx" value="xx"/>
<item link="xx" value="xx"/>
</putlist>
</definition>
模版文件中可以使用items了,
<logic:iterator id="item" name="items">
<bean:write name="iterm property="link"/>
<bean:write name="iterm property="value"/>
</logic:iterator>
7, 还看到一个使用ControlerSupport作为基类的觉得没有多大意思,就不说了.