栏目分类
开源技术 | Hibernate | JUnit | Tomcat | JBoss | eclipse | Spring | ANT | Struts
java新手入门 | 基础入门 | 开发工具 | JDK | oop面向对象 | 安全配置
J2EE | mvcwea | 应用服务器 | Rmi/Corba/Jini | J2ee核心 | Servlet/JSP | EJB | JDBC/JDO
J2ME | 核心技术 | 嵌入式 | 无线开发
XML | WebServices | XMLBeans
高级技术 | 多线程 | 设计模式 | ULM/OO | p2p/Jxta | JavaSecurity
核心技术 | SwingAwtApplet | 高级编程 | 网络编程 | Jvm技术 | JavaMedia
其它技术 | 资讯动态
排行榜
·Struts的<logic:iterate>标记完成复杂循环
·Struts标签中的多层logic:iterator详解
·MyEclipse+struts+Hibernate配置开发手册
·用Validator简化Struts的开发过程
·Struts常见错误及原因分析
·用ActionForward优化你的Struts应用程序
·在Struts中使用Tiles框架
·StrutsMenu中基于角色的权限管理
·分享:用Struts上传多个文件的方法
·struts中文问题和国际化问题的终极解决方案
·Struts源码研究-Action-Input属性篇
·一个高效简洁的Struts分页方法
·Struts配置与组件介绍
·使用Struts提供的HTML标签库
·初学者入门:Structs中基本配置入门
·Struts中html:options的使用
·用Struts的Token机制解决表单重复提交
·struts源代码阅读(Commons-Beanutils包)
·学习Struts提供的和Form相关的标签
·Struts开发指南之工作流程实例演示

    您现在的位置: Linux宝库 >> Java >> 开源技术 >> Struts >> 文章正文
Struts标签中的多层logic:iterator详解
Linux宝库 收集整理  作者:Linux宝库  时间:2007-12-31  收藏本站
来自:http://doc.linuxpk.com/46381.html
联系:linuxmine#gmail.com
分类:[Struts]
  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"></td>

  <td height="21" class="unnamed3"></td>

  </tr>

  <logic:iterate id="targetRes" name="targetSys" property="purviewResList">

  <tr><td height="21" class="unnamed2"></td><td

  height="21" class="unnamed5">

  <bean:write name="targetRes" property="cn"/>

  </td>

  <td

  height="21" class="unnamed6"></td>

  </tr>

  <logic:iterate id="targetOpr" name="targetRes" property="purviewOprList">

  <tr><td height="21" class="unnamed4"></td><td

  height="21" class="unnamed4"></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,都是虚拟的。 本文来自:http://doc.linuxpk.com/46381.html

 
     最新更新
·Struts开发指南之MVC架构实际应用
·Struts常见错误及原因分析
·利用Struts实现动态控制表格大小(1)
·利用Struts实现动态控制表格大小(2)
·在JBuilder9上使用Struts1.1的实现
·学习Struts提供的和Form相关的标签
·使用Struts提供的HTML标签库
·用ActionMapping构建漂亮的Struts应用程序
·用ActionForward优化你的Struts应用程序
·Struts应用程序的流程控制简介
·开始你的第一个struts应用程序
·集成Struts、Tiles和JavaServerFaces
·struts国际化程序尝试
·Struts用户和开发指南(前言之二)
·Struts用户和开发指南(前言之一)
·Struts模块化编程经典实战教程(三)
·Struts模块化编程经典实战教程(二)
·Struts模块化编程经典实战教程(一)
·Struts开发指南之安装与使用部分
·Struts开发指南之J2EEn层结构
·Struts开发指南之工作流程实例演示
·Struts开发指南之Taglib的初步了解
·Struts开发指南之其他Web构架介绍
·Struts的优点及其在Apusic上的安装
·Java进阶:分享Struts多模块的技巧
·Struts中html:options的使用
·使用Strutsportlet实现页面导航
·为Web服务构建Struts应用程序
·用Validator简化Struts的开发过程
·Struts入门--从原理到安装及实例讲解