struts-tiles 使用介绍

 

 

 

 

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作为基类的觉得没有多大意思,就不说了.

 

 

前提物质条件: 1.Struts Framework;    2.struts-tiles.tld

一. web.xml配置
< servlet > 
         < servlet-name >action </ servlet-name > 
         < servlet-class >org.apache.struts.action.ActionServlet </ servlet-class > 
         < init-param > 
                 < param-name >config </ param-name > 
                 < param-value >/WEB-INF/struts-confg.xml </ param-value > 
         </ init-param > 
         <init-param>        
                <param-name>definitions-config</param-name>             
                <param-value>/WEB-INF/tiles-defs.xml</param-value>        
        </init-param> 
         < load-on-startup >1 </ load-on-startup > 
</ servlet > 

... 
<taglib> 
        <taglib-uri>/tags/struts-tiles</taglib-uri> 
        <taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location> 
</taglib>

 

二. struts-confg.xml配置
     < plug-in  className ="org.apache.struts.tiles.TilesPlugin" > 
         < set-property  property ="definitions-config"  value ="/WEB-INF/tiles-defs.xml" /> 
     </ plug-in >

 

三. tiles-defs.xml内容
<? xml  version ="1.0"  encoding ="UTF-8" ?> 
<!DOCTYPE tiles-definitions PUBLIC    
    "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"    
    "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd"> 

< tiles-definitions > 
         < definition  name ="site.mainLayout"     path ="/mainlayout.jsp" > 
                 < put  name ="header"  value ="/header.html" /> 
                 < put  name ="body"  value ="/logon.jsp" /> 
                 < put  name ="footer"  value ="/footer.html" /> 
         </ definition > 
</ tiles-definitions >


四. mainlayout.jsp内容

<%@ page contentType="text/html; charset=UTF-8"%> 
<%@ taglib uri="/tags/struts-tiles" prefix="tiles" %> 

< html > 
   < head > 
     < meta  http-equiv ="Content-Type"  content ="text/html; charset=UTF-8" /> 
     < title >tiles </ title > 
   </ head > 
   < body > 
     < tiles:insert  attribute ="header"  /> 
                 < tiles:insert  attribute ="body"  /> 
                 < tiles:insert  attribute ="footer"  /> 
   </ body > 
</ html >


五.tiles的调用
index.jsp内容

< %@ page  contentType ="text/html; charset=UTF-8"% > 
< %@ taglib  uri ="/tags/struts-tiles"  prefix ="tiles" % > 

< tiles:insert  definition ="site.mainLayout"  flush ="true"  />

或者(无需tiles-defs.xml)

< %@ taglib  uri ="http://struts.apache.org/tags-tiles"  prefix ="tiles" % > 

< tiles:insert  template ="mainlayout.jsp" > 
     < tiles:put  name ="title"     value ="This is the title."  /> 
     < tiles:put  name ="header"  value ="header.jsp"  /> 
     < tiles:put  name ="body"      value ="body.jsp"  /> 
</tiles:insert>


调用index.jsp时就会引用mainlayout.jsp来显示。

 

常用属性:

flush="true" 代表要在插入对象之前将当前页面的out对象的数据刷新出去。

ignore="true" 带边如果该属性没有值的话 什么也不返回, 如果为false 如果属性为空的话会报出异常

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值