`
kalogen
  • 浏览: 880216 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts2中iterator标签的相关使用

阅读更多

English Title:(Turn) of label of the Iterator in Struts2 relevant use

在说明s:iterator标签的使用前,先了解下struts2中的Value Stack。这里参考了webwork中对Value Stack的描述,由于struts2是在webwork的基础上进行升级的,因此webwork对于Value Stack的表述同样适用于struts2。在这里不描述Value Stack具体做什么,但有两点需要注意:

 一个value stack本质上是一个List;
在栈中调用[n]将返回一个从位置n开始的子栈;
对于2举个例子说明。假定Value Stack包含了[model,action,others],那么

[0] --- 返回 [model,action,others];
[1] --- 返回 [action,others];
[2] --- 返回 [others];
现在将开始介绍s:iterator的一些使用。以下代码片段均在开发环境eclipse3.4 wtp、tomcat5.5、jdk5上使用struts2.1.6测试通过。

1) 、访问 days

defined  List<String>  days   ["Monday","Thursday","Friday","Sunday"]

view plaincopy to clipboardprint?
<s:iterator value="days"><s:property /></s:iterator> 
<s:iterator value="days"><s:property /></s:iterator>

2) 、使用 top 关键字使用(过滤掉Monday)

defined  List<String>  days   ["Monday","Thursday","Friday","Sunday"]

view plaincopy to clipboardprint?
<s:iterator value="days"> 
            <s:if test="top!='Monday'"> 
                <s:property /> 
            </s:if> 
        </s:iterator> 
<s:iterator value="days">
            <s:if test="top!='Monday'">
                <s:property />
            </s:if>
        </s:iterator>

top 指代当前迭代元素,可以为对象;
这里的top可用[0].top替代,但不能使用[0]。[0]代表整个栈对象。如果单纯调用[0]将会调用其toString()方法输出对象信息;

3)、使用 last / first 关键字使用

defined  String[][] aTs = { { "一", "二", "三", "四" },{ "一一", "二二", "三三", "四四"} };

view plaincopy to clipboardprint?
<!--遍历二维数组,The trick here is to use 'top' as the value for the inner iterator--> 
          <s:iterator value="aTs" status="of"> 
          <s:if test="#of.last"><br/></s:if> 
          <s:iterator value="top"> 
<!--亦可用[0].top替代。如果单纯用[0],则会同时打印该处栈对象信息--> 
         <s:property /> 
          </s:iterator> 
          </s:iterator> 
<!--遍历二维数组,The trick here is to use 'top' as the value for the inner iterator-->
          <s:iterator value="aTs" status="of">
       <s:if test="#of.last"><br/></s:if>
       <s:iterator value="top">
<!--亦可用[0].top替代。如果单纯用[0],则会同时打印该处栈对象信息-->
   <s:property />
       </s:iterator>
          </s:iterator>  


iterator 标签中的status属性代表当前迭代的位置;
#of.last用于判断当前是否跌到的最后一个元素;
last返回一个boolean类型;
first 返回一个boolean类型;
4)、使用 odd / even 关键字

下面的例子要实现每行输出颜色不同的效果。

defined  List<String>  days   ["Monday","Thursday","Friday","Sunday"]

view plaincopy to clipboardprint?
       <!--奇数行显示为红色,偶数行显示为绿色--> 
       <s:iterator value="days" status="offset"> 
    <s:else> 
        <s:if test="#offset.odd==true"> 
            <li style="color: red" mce_style="color: red"><s:property /></li> 
        </s:if> 
        <s:else> 
            <li><s:property /></li> 
        </s:else> 
    </s:else> 
</s:iterator> 
        <!--奇数行显示为红色,偶数行显示为绿色-->
        <s:iterator value="days" status="offset">
  <s:else>
   <s:if test="#offset.odd==true">
    <li style="color: red" mce_style="color: red"><s:property /></li>
   </s:if>
   <s:else>
    <li><s:property /></li>
   </s:else>
  </s:else>
 </s:iterator>

odd关键字用来判断当前迭代位置是否为奇数行。odd返回boolean类型;
evne关键字用来判断当前迭代位置是否为偶数行。even返回boolean类型
5)、总结下,当声明iterator的status属性时,通过#statusName.method 可以使用以下方法:

even : boolean - 如果当前迭代位置是偶数返回true
odd : boolean - 如果当前迭代位置是奇数返回true
count : int - 返回当前迭代位置的计数(从1开始)
index : int - 返回当前迭代位置的编号(从0开始)
first : boolean - 如果当前迭代位置是第一位时返回true
last : boolean - 如果当前迭代位置是最后一位时返回true
modulus(operand : int) : int - 返回当前计数(从1开始)与指定操作数的模数
6)、最后再来看下在iterator中调用value stack的用法。

假定countries是一个List对象,每一个country有一个name属性和一个citys List对象,并且每一个city也有一个name属性 。那么我们想要在迭代cities是访问countries的name属性就的用如下方式:


view plaincopy to clipboardprint?
<s:iterator value="countries"> 
    <s:iterator value="cities"> 
        <s:property value="name"/>, <s:property value="[1].name"/><br> 
    </s:iterator> 
</s:iterator> 
           <s:iterator value="countries">
               <s:iterator value="cities">
                   <s:property value="name"/>, <s:property value="[1].name"/><br>
               </s:iterator>
           </s:iterator>

这里的 <ww:property value="name"/>取的是ctiy.name;<ww:property value="[1].name"/>取得是country.name
<ww:property value="[1].name"/> 等价于 <ww:property value="[1].top.name"/>
we refer to a specific position on the stack: '[1]'. The top of the stack, position 0, contains the current city, pushed on by the inner iterator; position 1 contains the current country, pushed there by the outer iterator.(city处于当前栈,即top或者[0],而[1]指明了外层iterator对象,即country)
 '[n]'标记引用开始位置为n的子栈(sub-stack),而不仅仅是位置n处的对象。因此'[0]'代表整个栈,而'[1]'是除top对象外所有的栈元素。

本文来自CSDN博客,转载请标明出处:

(责任编辑:admin)

==========English==========

Showing S:iBefore the use of Terator label, understand the Value Stack in next Struts2 first. Consulted be opposite in Webwork here the description of Value Stack, because Struts2 undertakes upgrading on the foundation of Webwork, because of this Webwork to Value Stack state apply to Struts2 likewise. Do not describe Value Stack here specific what to do, but have needed to notice at 2 o'clock:

 A Value Stack is a List substantially;
Call in inn [N] will return to begin from positional N child inn;
To 2 lift an example specification. Assume Value Stack was included [Model, action, others] , so

[0]---Return [Model, action, others] ;
[1]---Return [Action, others] ;
[2]---Return [Others];
Will begin to introduce S:i nowOf Terator a few use. Extract of the following code all is developing environmental Eclipse3.4 Wtp, Tomcat5.5, Jdk5 to go up use Struts2.1.6 test is passed.

Days of 1) , visit

Defined List<String> Days  ["Monday" , "Thursday" , "Friday" , "Sunday" ]

View Plaincopy To Clipboardprint?
<s:iTerator Value="days"><s:pRoperty /></s:iTerator> 
<s:iTerator Value="days"><s:pRoperty /></s:iTerator>

Key word of 2) , use Top is used (filter Monday)

Defined List<String> Days  ["Monday" , "Thursday" , "Friday" , "Sunday" ]

View Plaincopy To Clipboardprint?
<s:iTerator Value="days"> 
           <s:iF Test="top! ='Monday'"> 
               <s:pRoperty /> 
           </s:iF> 
       </s:iTerator> 
<s:iTerator Value="days">
           <s:iF Test="top! ='Monday'">
               <s:pRoperty />
           </s:iF>
       </s:iTerator>

Top points to element of acting current iteration, can be an object;
The Top here is usable [0].top is replaced, but cannot use [0] . [0] represents whole inn target. If pure call [0] will call its ToString() method to export target information;

Key word of 3) , use Last / First is used

Defined One " of String[][] ATs = {{" , "2 " , "3 " , "4 " } , {" one by one " , "22 " , "33 " , "44 "} };

View Plaincopy To Clipboardprint?
< ! - - all over all previous 2 dimension group, the Trick Here Is To Use 'top' As The Value For The Inner Iterator- - > 
         <s:iTerator Value="aTs" Status="of"> 
         <s:iF Test="#of.last"><br/></s:iF> 
         <s:iTerator Value="top"> 
< ! - - Yi Ke is used [0].top is replaced. If pure with [0] , can print information of target of the place inn at the same time- - > 
        <s:pRoperty /> 
         </s:iTerator> 
         </s:iTerator> 
< ! - - all over all previous 2 dimension group, the Trick Here Is To Use 'top' As The Value For The Inner Iterator- - >
         <s:iTerator Value="aTs" Status="of">
      <s:iF Test="#of.last"><br/></s:iF>
      <s:iTerator Value="top">
< ! - - Yi Ke is used [0].top is replaced. If pure with [0] , can print information of target of the place inn at the same time- - >
  <s:pRoperty />
      </s:iTerator>
         </s:iTerator>  

The Status attribute in Iterator label represents the position of current iteration;
#of.last is used at the last element that whether judgement drops currently; Last returns; of type of a BooleanFirst returns; of type of a Boolean
Key word of 4) , use Odd / Even

The example below should achieve the result with every output different color.

Defined List<String> Days  ["Monday" , "Thursday" , "Friday" , "Sunday" ]

View Plaincopy To Clipboardprint?
      < ! - - odd travel shows for red, even travel shows for green- - > 
      <s:iTerator Value="days" Status="offset"> 
   <s:eLse> 
       <s:iF Test="#offset.odd==True"> 
           <li Style="color: Red" Mce_style="color: Red"><s:pRoperty /></li> 
       </s:iF> 
       <s:eLse> 
           <li><s:pRoperty /></li> 
       </s:eLse> 
   </s:eLse> 
</s:iTerator> 
       < ! - - odd travel shows for red, even travel shows for green- - >
       <s:iTerator Value="days" Status="offset">
  <s:eLse>
   <s:iF Test="#offset.odd==True">
    <li Style="color: Red" Mce_style="color: Red"><s:pRoperty /></li>
   </s:iF>
   <s:eLse>
    <li><s:pRoperty /></li>
   </s:eLse>
  </s:eLse>
 </s:iTerator>

Odd key word uses judgement whether is current iteration position odd travel. Odd returns Boolean type;Evne key word uses judgement whether does current iteration position go for even number. Even returns Boolean type
Below 5) , summary, when the Status attribute of statement Iterator, pass #statusName.method to be able to use the following method:

Even: If Boolean - is current iteration position is even number returns TrueOdd: If Boolean - is current iteration position is odd return TrueCount: The computation that Int - returns current iteration position (from 1 begin)Index: The number that Int - returns current iteration position (from 0 begin)First: If Boolean - is current iteration position is the first when return TrueLast: If Boolean - is current iteration position is last when return TrueModulus(operand: Int) : Int - returns current count (from 1 begin) with the modulus that appoints operand
The 6) , usage that see next is in in Iterator call Value Stack finally again.

Assume Countries is object of a List, each Country has attribute of a Name and boy or girl friend of a Citys List, and each City also has property of a Name. So we want to be in the Name attribute that iteration Cities is visit Countries with following means:

View Plaincopy To Clipboardprint?
<s:iTerator Value="countries"> 
   <s:iTerator Value="cities"> 
       <s:pRoperty Value="name"/> , <s:pRoperty Value="[1].name"/><br> 
   </s:iTerator> 
</s:iTerator> 
          <s:iTerator Value="countries">
              <s:iTerator Value="cities">
                  <s:pRoperty Value="name"/> , <s:pRoperty Value="[1].name"/><br>
              </s:iTerator>
          </s:iTerator>

The <ww:p hereWhat Roperty Value="name"/> takes is Ctiy.name;<ww:pRoperty Value="[1].name"/> is obtained is Country.name
<ww:pRoperty Value="[1].name"/>Equal in value at <ww:pRoperty Value="[1].top.name"/>We Refer To A Specific Position On The Stack: '[1]' . The Top Of The Stack, position 0, contains The Current City, pushed On By The Inner Iterator; Position 1 Contains The Current Country, pushed There By The Outer Iterator. (City is in current inn, namely Top or [0] , and [1] shows palpability is outer Iterator object, namely Country)
 '[n]' mark cites begin the position to be N child inn (Sub-stack) , is the target that positional N locates not just. Because this '[0]' represents whole inn, and '[1]' is all inn elements outside dividing Top target.

The article comes from CSDN rich guest, reprint indicate please provenance:

(Responsibility edits: Admin)

==========回复|reply==========

==========English==========
N/A<!-- //正文结束 -->

分享到:
评论

相关推荐

    struts2中iterator 标签的使用详解

    ### Struts2中Iterator标签的深入解析与应用 在Struts2框架中,`&lt;s:iterator&gt;`标签是一个非常强大的工具,用于在JSP页面上循环遍历集合数据,如列表(List)、数组、Map等。它允许开发者以一种动态且灵活的方式展示...

    struts2 标签iterator使用

    在Struts2框架中,`&lt;s:iterator&gt;`标签是一个非常强大的工具,用于遍历集合或数组中的元素,尤其在处理列表数据时极为有用。通过本文档提供的代码示例,我们将深入探讨`&lt;s:iterator&gt;`标签的使用方法及其与不同数据...

    Struts2 iterator 标签遍历 Map,List,数组(三十六)

    在Struts2中,`iterator`标签是用于遍历集合数据的重要工具,它可以用来迭代Map、List和数组等数据结构,以便在视图层进行展示。本篇文章将深入探讨`iterator`标签在遍历这些数据类型时的具体用法。 首先,我们来看...

    struts2 iterator标签遍历二维数组

    本文将深入探讨如何使用Struts2中的`&lt;s:iterator&gt;`标签来遍历二维数组,并通过实例代码来具体说明其用法。 ### Struts2 Iterator标签 #### 1. 基本概念 `&lt;s:iterator&gt;`是Struts2的一个非常强大的标签,主要用于...

    struts2标签使用例子

    - 在JSP页面中使用标签,如`s:textfield name="username"`绑定Action的username属性。 - 配置Struts2的配置文件(struts.xml或struts.properties),定义Action和结果。 通过以上介绍,我们可以看出Struts2标签库...

    struts2标签库例子

    下面,我们将详细介绍 Struts2 标签库的使用。 4.1 通用标签 通用标签用来控制页面的执行过程,并从 Action 或值堆栈中取得数据。这些标签可以分为控制标签、数据标签和其他标签。 控制标签用来控制程序的执行,...

    Struts2标签使用及API文档

    使用Struts2标签,首先需要在JSP页面中引入Struts2的标签库: ```jsp &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; ``` 然后,可以像使用HTML标签一样使用Struts2标签,例如创建一个文本字段: ```jsp ...

    Struts标签库 Struts 标签库

    Struts2框架中的标签库是基于JSP标准标签库(JSTL)的扩展,它提供了一系列与动作、结果、表单和国际化相关的标签。这些标签能够帮助开发者在页面上轻松地展现数据、处理表单提交、实现动态内容生成等。 2. **主要...

    对 Struts 2 的 s: iterator tag 中嵌套的所有 s: checkbox 进行全选、反选操作

    在这个场景中,我们关注的是`s:iterator`标签和`s:checkbox`的使用,它们是Struts 2 中视图层(JSP)的重要组件,用于迭代数据集合并呈现复选框。在Web应用中,用户经常需要进行全选和反选的操作,这通常在管理多个...

    struts2 标签库 帮助文档

    Struts 2 标签库(文档手册) Tags-API-CLSW-JSP &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. &lt;s:a href=""&gt;&lt;/s:a&gt;-...

    Struts2之struts2标签库了解和使用案例struts025

    在Struts2中,标签库是其核心组件之一,极大地简化了视图层的开发,使得开发者可以更加专注于业务逻辑而不是繁琐的HTML代码。本篇文章将深入探讨Struts2的标签库,并通过具体案例进行讲解。 首先,Struts2标签库...

    Struts2 标签使用简介

    除了预定义的标签外,Struts2还允许开发者自定义标签,这需要创建一个继承自`org.apache.struts2.views.jsp.TagSupport`的Java类,并在JSP页面中使用`&lt;s:tag&gt;`进行调用。 五、标签库的扩展性 Struts2的标签库不仅...

    iterator嵌套,struts2

    在JSP页面中,使用Struts2的`iterator`标签遍历`timereportinfo_view`时,我们需要进行两层嵌套。外层`iterator`遍历`LinkedHashMap`的键值对,内层`iterator`则遍历每个日期对应的`List`。下面是如何正确使用`...

    Struts2实例 国际化 类型转换 struts标签

    在Struts2中,这通常通过资源 bundle 文件实现,例如`messages.properties`和`messages_zh_CN.properties`,分别用于存储默认语言和中文语言的文本。在Action或者JSP页面中,可以通过`&lt;s:text&gt;`标签来引用这些资源,...

    Struts2全部标签使用说明

    下面将详细介绍Struts2中的部分核心标签及其用法。 A. `&lt;s:a&gt;` 和 `&lt;s:action&gt;`: - `&lt;s:a href=""&gt;` 标签用于创建超链接,它可以绑定到一个Action,使得链接具有动态性。例如,`&lt;s:a href="myAction.action"&gt;Click ...

    struts2中循环标签id的设置

    下面将详细解释如何在Struts2中设置循环标签的ID以及其工作原理。 首先,`s:iterator`标签的基本结构如下: ```jsp &lt;s:iterator value="collectionName" status="statusVariable"&gt; &lt;!-- 迭代体内容 --&gt; &lt;/s:...

    Struts2常用标签

    本篇文章主要关注Struts2中的常用标签,这些标签大大简化了Web开发中的一些常见任务。 首先,我们要明白Struts2标签库与Struts1.x的不同之处。在Struts1.x中,标签库按照功能划分为HTML、Tiles、Logic和Bean等几个...

    struts2中siterator 标签的使用详解 及 OGNL用法

    以上内容详细介绍了 Struts2 中 `siterator` 标签的使用和 OGNL 的基本操作。这些工具使得在 JSP 页面中处理和展示集合数据变得更加简单和直观。通过熟练掌握这些知识,开发者可以更高效地构建动态的、响应式的 Web ...

    struts2标签大全

    在Struts2中,使用了一系列的标签库来增强JSP页面的功能,使得开发者可以更方便地实现业务逻辑与视图的分离,提高代码的可读性和可维护性。本篇文章将详细介绍Struts2中的各种标签及其应用。 1. **s:form标签**:这...

    struts2的标签应用

    在Struts2中,标签库是其核心特性之一,它们为开发者提供了便利的方式来构建动态用户界面,无需深入HTML和JavaScript的底层细节。在本篇中,我们将深入探讨Struts2的标签应用及其在实际开发中的使用。 首先,了解...

Global site tag (gtag.js) - Google Analytics