Java资源网

| JAVA基础 | 环境配置 | JDBC | 线程技术 | Socket编程 | JavaMail | JAVA与XML | 设计模式 | 技术新闻 | Java认证 | 程序人生 软件下载
| JSP&Servlet | Spring | Struts | Hibernate | JBuilder | Eclipse | WebService | EJB技术 | J2ME开发 | 应用服务器 | JXTA | Ajax
Articles search文章搜索
   关键字:
   类 别:
       
New download 最新下载
· [组件]HTML Parser 1.5
· [教程]WebSphere Studio应用教程
· [组件]JDom 1.0
· [工具]Junit3.8.1
· [教程]EJB编程及J2EE系统架构和设计
· [教程]EJB教程
· [教程]J2EE Tutorial中文版
· [教程]Java编程思想2(英文)
· [教程]java编程思想(完整版)
· [教程]Java网络编程
New articles 最新文章
· 设计移动 Web 服务
· 解析XML的时候完全忽略DTD
· 理解XML Schema XML Schema 初步
· 标签库的深入研究
· 提升JSP应用程序的七大绝招
· 如何使用JDOM对XML文件进行操作
· 处理XML字符串中特殊字符
· 利用Digester把XML转换成为Java对象
· 使用WebService 和RMI远程协作
· 使用Axis开发Web Service程序
Articles top 热门文章
· Eclipse基础--plugin插件安装(6644)
· eclipse+tomcat+lomboz的安装配置说明(4774)
· Java程序员就业前景(4584)
· Windows下JAVA环境变量的设置祥解(3788)
· Tomcat下JSP、Servlet和JavaBean环境的配置(3716)
· 使用links方式安装Eclipse插件(3698)
· 一个老程序员的心理话(3533)
· linux下jdk的安装与配置(3459)
· 初学者入门:Structs中基本配置入门(3334)
· Eclipse 运行命令行参数大全(3084)
您的位置:首页>>Struts>>Struts标签中的多层logic:iterator详解
Struts标签中的多层logic:iterator详解
2005-08-12   来源:CSDN  作者:whoopee
 

logic:Iterator标签(以下简称“该标签”)是Struts里非常常用的一个标签,其作用在于循环显示给定容器对象中的值。

如此常用的标签,其源代码当然需要拿出来研究一下,以下列举几条研究成果:
1、该标签内部使用Collection来表示给定的容器,所有的给定容器对象(如ArrayList,Map等)都会被其转化成为Collection,Collection实际就是Map和List的父类。
2、该标签自己维护循环索引,不用程序员管理索引
3、该标签常见的几个属性如下:name、property、scope、id

对应Struts给出的Api说明如下:
name:包括要遍历Collection的Jsp页面的bean的名字(如果property没有被定义),或者是那些通过getter方法获得属性的Jsp中的Bean的名字,这些getter方法返回的是Collection(如果property定义了)。
property:在name命名的Jsp bean中定义的属性的名字,通过getter方法返回一个Collection
scope:指示到哪里去寻找name为名字的bean,如果没有定义缺省为"any scope"
id:如果Collection非空的话,在每次遍历时候Collection中每个元素的名字。


其中除了id每个元素均为Rt expr,这儿的rt expr的意思就是Run Time Expression。明确的说就是,如果你对一个Attribute的<rtexprvalue>指定为true,你就可以在这样的属性中使用<%=%>之类的东东。这个配置文件在tld中。
只有id是必须要说明的。


关于Api说明的说明:
id只是一个临时标识,在下面的<bean:write里面出现的name属性要和id一致才能打印出<bean:write的property,而此property就是在iterator中的属性。

举例说明
以下代码生成一个阶梯状表格
 系统 资源 操作
 soft3     
     res3   
          opt3
 soft12     
     res12   
          opt1211
 soft11     
     res11   
          opt1111

在此之前传来一个request.getAttribute("userPurview"),所以有在第一个logic中的userPurview,就是在这个request里面寻找userPurview
返回的是一个list

<table width="300" border="0">
<tr><td>系统</td>
<td>资源</td>
<td>操作</td>
</tr>
 <logic:iterate id="targetSys" name="userPurview" scope="request">  //这个id可以随便起名,但是要注意下文使用的一致性
 <tr bgcolor="#cccccc"><td height="21" class="unnamed2">
 <bean:write name="targetSys" property="cn"/>        //此处name和上面id保持一致,property就是第一个list里面的元素
 </td>
 <td height="21" class="unnamed2">&nbsp;</td>
 <td height="21" class="unnamed3">&nbsp;</td>
 </tr>
  <logic:iterate id="targetRes" name="targetSys" property="purviewResList">
  <tr><td height="21" class="unnamed2">&nbsp;</td><td  height="21" class="unnamed5">
  <bean:write name="targetRes" property="cn"/>
  </td>
  <td  height="21" class="unnamed6">&nbsp;</td>
  </tr>

   <logic:iterate id="targetOpr" name="targetRes" property="purviewOprList">
   <tr><td height="21" class="unnamed4">&nbsp;</td><td  height="21" class="unnamed4">&nbsp;</td>
   <td  height="21" class="redzi">
   <bean:write property="cn" name="targetOpr"/></td>
   </tr>
   </logic:iterate>

  </logic:iterate>

 </logic:iterate>
</table>


结论:
多级迭代和单层差不多,唯一注意的就是id和<bean:write中的name的对应,上级logic的id与下级logic的name对应,并且取出来的要是个Collection,name和id不一定实际需要这个bean,都是虚拟的。

  --相关文章--
· 用标签库提高开发速度 (2007-04-17)
· 用Struts实现管理大型复杂的网站 (2007-04-17)
· 我的struts分页算法的实现 (2007-04-17)
· 在Struts和Hibernate之间搭起桥梁 (2007-04-17)
· 在Struts 2中实现文件上传 (2007-04-17)
· 创建struts1.2 + Hibernate3.0 Web工程 (2007-04-17)

版权所有©2005-2006 JAVA资源网 渝ICP备05007591号 虚拟主机 | 关于我们 | 联系方式 | 广告业务 | 网站地图 | 友情链接