struts2的s:iterator 标签 详解

struts2的s:iterator 可以遍历 数据栈里面的任何数组,集合等等 以下几个简单的demo:
s:iterator 标签有3个属性:
    value:被迭代的集合
    id   :指定集合里面的元素的id
    status 迭代元素的索引

1:jsp页面定义元素写法 数组或list

<s:iterator value="{‘1‘,‘2‘,‘3‘,‘4‘,‘5‘}" id=‘number‘>
    <s:property value=‘number‘/>A
</s:iterator>
打印结果为: 1A2A3A4A5A

2:索引的用法
如果指定了status,每次的迭代数据都有IteratorStatus的实例,它有以下几个方法
int getCount()返回当前迭代了几个元素
int getIndex()返回当前元素索引
boolean isEven()当然的索引是否偶数
boolean isFirst()当前是否第一个元素
boolean isLast()
boolean isOdd()当前元素索引是否奇数

<s:iterator value="{‘a‘,‘b‘,‘c‘}" id=‘char‘ status=‘st‘>
    <s:if test="#st.Even">
        现在的索引是奇数为:<s:property value=‘#st.index‘/>
    </s:if>
    当前元素值:<s:property value=‘char‘/>
</s:iterator>
3:遍历map
value可以直接定义为:

value="#{"1":"a","2":"b"}"
每个元素以都好隔开。元素之间的key和value 冒号隔开
value也可以是数据栈里面的java.util.Map对象
遍历写法如下:

<s:iterator value="map" id="id" status="st">
     key : <s:property value=‘key‘/>
     value:<s:property vlaue=‘value‘/>
</s:iterator>
当然key 和value 都可以使java 的 Object

3:遍历数据栈.简单的List类,
List<Attr>
class Attr{String attrName;String getAttrName(){return "123";}}

<s:iterator value="label" id="id">
    <s:property value="#id.attrName" />
</s:iterator>
当然value 还可以写成 value="%{label}" label可以有.操作
label的属性List 可以写成value="%{label.list}" 相当于:getLabel().getList();

4:遍历2个list;
List<AttrName> attrN {color,size,style}
List<AttrValue> attrV {red,20,gay}
这2个list的元素是一一对应的,一个attrN对应一个attrV

<
index    is : <s:property value=‘status.index‘/>
attrName is : <s:property value=‘id‘/> or <s:property value=‘%{id}‘/>
attrName is : <s:property value=‘%{attrV[#status.index]}‘/>
</s:iterator>

iterator

描述:
用于遍历集合(java.util.Collection)或枚举值(java.util.Iterator)。

参数:

必需 类型 @
page contentType"text/html;
charset=UTF-8%>
@
page import""

@
page import""

@
taglib prefix"" =/struts-tags%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">

List list new
ArrayList();
    
list.add(Max);

list.add(Scott);

list.add(Jeffry);

list.add(Joe);

list.add(Kelvin);

request.setAttribute(names,
list);

<html>
    <head>

<title>Iterator</title>

</head>

<body>

<h3>Names:
</h3>
        <!--

1、此处的空property元素用于获得当前iterator的值
            
2、status被设成stuts,在iterator的里面就可以通过#stuts取得IteratorStatus的对象。IteratorStatus类包含当前序号信息,如是否第一个或最后一个,是否为奇数序号。这些信息在我们做格式化的时候,显得非常有用。

-->

<ol>

<s:iterator
value="#request.names" status="stuts">

<s:if
test="#stuts.odd == true">
                    <li>White
<s:property /></li>

</s:if>

<s:else>

<li
style="<s:property
/></li>

</s:else>

</s:iterator>

</ol>

</body>
</html>

在struts2中,iterator标签是很好用的,但也要注意一下.举个例子,
如果要在每行中只显示两条记录,这个经常用到的例子来的了,可以这样用:
<table width="800px"
align="center">
  
<tr>
    
<s:iterator value="songs"
status="st">

<td>
               
<input
                
type="checkbox" name="songIds" id="<s:property
value=‘id‘/>" value="<s:property
value=‘id‘/>"><label
for="<s:property value=‘id‘/>"
class="checkboxLabel"><s:property
value="name"/>
            
</td>

<s:if test="#st.modulus(2)==0">
                     
<s:if test="#st.last">
                      
</tr></s:if>

<s:else>
          
               
</tr><tr></s:else>

</s:if>
   
</s:iterator>
  
  
</table>
这里无非就是要注意   <s:if
test="#st.modulus(2)==0">
来判断整除2是否为0,(也可以用<s:if
test="#st.getIndex()%2==0)
    并且注意如下的使用
#st.last,判断是否到了最后一条记录,并且注意:
iterator标签有如下方法:
boolean isEven() 当前迭代元素索引是否为偶数;
boolean isOdd() 当前迭代元素索引是否为奇数;
boolean isLast() 是否为最后一条元素;
boolean isFirst() 是否为第一条元素。
有以上元素,那么判断何时加入tr就非常方便。

若采用s2,则可以将变量赋值在action的属性变量(需有get,set)

<s:iterator id="roles"
value="currole" status="status" >
  
    <tr>

<td
colspan="4">${roles.ROLE_NAME
}</td>
  
    </tr>

</s:iterator>

currole为属性变量

时间: 2024-10-12 13:26:10

struts2的s:iterator 标签 详解的相关文章

struts2的s:iterator 标签 详解&lt;转&gt;

struts2的s:iterator 可以遍历 数据栈里面的任何数组,集合等等 以下几个简单的demo: s:iterator 标签有3个属性:     value:被迭代的集合     id   :指定集合里面的元素的id     status 迭代元素的索引 1:jsp页面定义元素写法 数组或list <s:iterator value="{'1','2','3','4','5'}" id='number'>     <s:property value='numb

struts2中ognl标签详解

<body> <s:set name="age" value="61" /> <!-- if elseif else 参数test:决定标志里的内容是否显示的表达式,类型boolean 注:else标志没有这个参数 --> <h3>if语句</h3> <s:if test="{age>60}"> 老年人 </s:if> <s:elseif test=&

HTML 中的marquee标签详解

该标签不是HTML3.2的一部分,并且只支持MSIE3以后内核,所以如果你使用非IE内核浏览器(如:Netscape)可能无法看到下面一些很有意思的效果 该标签是个容器标签 语法: <marquee></marquee> 以下是一个最简单的例子: 代码如下: <marquee><font size=+3 color=red>Hello, World</font></marquee> 下面这两个事件经常用到: onMouseOut=&q

Meta标签详解

Meta标签详解,在网上转的,希望对大家有用 引言 您的个人网站即使做得再精彩,在"浩瀚如海"的网络空间中,也如一叶扁舟不易为人发现,如何推广个人网站,人们首先想到的方法无外乎以下几种: ● 在搜索引擎中登录自己的个人网站 ● 在知名网站加入你个人网站的链接 ● 在论坛中发帖子宣传你的个人网站 很多人却忽视了HTML标签META的强大功效,一个好的META标签设计可以大大提高你的个人网站被搜索到的可能性,有兴趣吗,谁我来重新认识一下META标签吧! META标签是HTML语言HEAD区

【转载】html中object标签详解

[转载自http://blog.csdn.net/soliy/archive/2010/03/22/5404183.aspx] html标签之Object标签详解 作者:网络    出处:网络    2010年3月22日13:36:29 定义和用法定义一个嵌入的对象.请使用此元素向您的 XHTML 页面添加多媒体.此元素允许您规定插入 HTML 文档中的对象的数据和参数,以及可用来显示和操作数据的代码.<object> 标签用于包含对象,比如图像.音频.视频.Java applets.Acti

meta标签详解(meta标签的作用)///////////////////////////转

meta标签详解(meta标签的作用) 很多人却忽视了HTML标签META的强大功效,一个好的META标签设计可以大大提高你的个人网站被搜索到的可能性,有兴趣吗,谁我来重新认识一下META标签吧 您的个人网站即使做得再精彩,在“浩瀚如海”的网络空间中,也如一叶扁舟不易为人发现,如何推广个人网站,人们首先想到的方法无外乎以下几种: ● 在搜索引擎中登录自己的个人网站 ● 在知名网站加入你个人网站的链接 ● 在论坛中发帖子宣传你的个人网站 很多人却忽视了HTML标签META的强大功效,一个好的MET

设计模式 - 迭代器模式(iterator pattern) 详解

迭代器模式(iterator pattern) 详解 本文地址: http://blog.csdn.net/caroline_wendy 迭代器模式(iterator pattern) : 提供一种方法顺序访问一个聚合对象中的各个元素, 而又不暴露其内部的表示; 建立迭代器接口(iterator interface), 包含hasNext()方法和next()方法; 不同聚合对象的具体的迭代器(concrete iterator), 继承(implements)迭代器接口(iterator in

网页设计:Meta标签详解

很多人忽视了HTML标签META的强大功效,一个好的META标签设计可以大大提高你的个人网站被搜索到的可能性,有兴趣吗,谁我来重新认识一下META标签吧! META标签是HTML语言HEAD区的一个辅助性标签,它位于HTML文档头部的<HEAD>标记和<TITLE>标记之间,它提供用户不可见的信息.meta标签通常用来为搜索引擎robots定义页面主题,或者是定义用户浏览器上的cookie:它可以用于鉴别作者,设定页面格式,标注内容提要和关键字:还可以设置页面使其可以根据你定义的时

技术分享:html中的Map,area标签详解

area标签详解 一.界说和用法 html中的Map.> 界说一个客户端图画映射.图画映射(image-map指带有可点击区域的一幅图画. 二.脚本示例: shqpe特点的设置阐明0.: 1.rect界说一个矩形区域.右下角的坐标,coord特点设置值为矩形的左上角.各个坐标值之间用逗号分隔; coord特点设置值为多边形各项极点的坐标值2.poli界说一个多边形区域.; 3.circl界说一格圆形区域.前两个参数分别为圆心的横,coord特点设置值为圆心坐标及半径.纵坐标,第三个参数为半径.