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为属性变量

转载于:https://www.cnblogs.com/plzdaye/p/3961238.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Protocol Buffers的应用

1. Protocol Buffers的介绍 Protocol buffers are Google’s language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then …

编程提高:一天一道编程题

1.文本操作 逆转字符串——输入一个字符串&#xff0c;将其逆转并输出。 拉丁猪文字游戏——这是一个英语语言游戏。基本规则是将一个英语单词的第一个辅音音素的字母移动到词尾并且加上后缀-ay&#xff08;譬如“banana”会变成“anana-bay”&#xff09;。可以在维基百科上了…

android自验签名证书,没有以前的互联网连接,无法验证Android自签名证书

使用SSL基础架构&#xff1a;我们有一个有效的客户端/服务器设置,其中Android版本4.2和4.4的手机充当客户端,必须通过其自签名SSL证书验证服务器.问题&#xff1a;只要设备在尝试连接之前至少有一次互联网访问权限,服务器证书验证就会起作用.但是,如果执行恢复出厂设置且设备直…

asp.net缓存(二)

ASP.NET页面局部缓存 有时缓存整个页面是不现实的&#xff0c;因为页的某些部分可能在每次请求时都需要变化。在这些情况下&#xff0c;只能缓存页的一部分。顾名思义&#xff0c;页面部分缓存是将页面部分内容保存在内存中以便响应用户请求&#xff0c;而页面其他部分内容则为…

学习C# - Hello,World!

第一天学C#,开始学着写一些学习笔记&#xff0c;看了一下传智播客的视频&#xff0c;按照传智播客的教学顺序&#xff0c;开始学习。 class Program{static void Main(string[] args){Console.WriteLine("Hello World!");//自动添加回车换行Console.Write("Hell…

android获取button宽度,android – 如何获得Button的高度和宽度

我创建了一系列按钮.现在我想找到按钮的高度和宽度,为此我使用了getWidth()和getHeight().但问题是它总是返回0.为什么会发生这种情况&#xff1f;我发送了我的代码,请检查是否有任何问题.int x,y;LinearLayout layoutVertical (LinearLayout) findViewById(R.id.liVLayout);L…

java执行sql列名无效_嵌套异常是java.sql.SQLException:无效的列名ORACLE

我尝试在Java中使用JdbcTemplate执行以下oracle查询&#xff1a;select RESOURCE_IDfrom REPRO_PRINTING_JOBwhere (USER_ID? and PRINTING_CENTER_ID?)group by RESOURCE_IDunion allselect RESOURCE_IDfrom REPRO_PRINTING_JOB_OLDwhere (USER_ID? and PRINTING_CENTER_ID…

(七)Maven使用的最佳实践

这里说一下在使用Maven过程中不是必须的&#xff0c;但十分有用的几个实践&#xff0c;关键时刻或许能解决您的问题。 1.设置MAVEN_OPTS环境变量 通常需要设置MAVEN_OPTS的值为-Xms128m -Xmx512m&#xff0c;因为Java默认的最大可用内存往往不能够满足Maven运行的需要&#xff…

android beam传输速率,无线网络的速率为何不能达到最大值

1、无线速率可以达到最大值&#xff0c;只是发送速率和传输流量是两个概念&#xff0c;通俗点讲&#xff0c;无线的发送速率是把信号以指定速率发出去(信号好的时候以高速率发&#xff0c;信号差的时候以低速率发)。传输流量是指单位时间内传输的数据量&#xff0c;大部分用户关…

【SMTP 补录 Apache服务】

【补录&#xff0c;续】1.【配置空壳邮件接受】【mta】【前置&#xff1a;在/etc/named.rfc1912.zones 添加一个可以接受邮件的域hxl.org&#xff08;与你数据库中写的向对应&#xff09;,这个域的所在ip就是你机子的&#xff0c;因为要从你的机子转发】 【配置该机的vim/etc/…

image打开rgb16 qt_QT中显示图像数据

一般图像数据都是以RGBRGBRGB……字节流的方式(解码完成后的原始图像流)&#xff0c;我说成字节流&#xff0c;那就表明R&#xff0c;G&#xff0c;B的值各占一个字节&#xff0c;在编程时表示的就是unsigned char * data。我们先来看一下QT中的QImage对象。在加载data数据前&a…

开启chrome默认支持ipv6

在快捷方式后面的属性后面输入 --enable-ipv6 以下为转载&#xff1a; [转载]chrome开启或关闭IPV6方法 (2012-05-27 17:54:06) 转载▼ 标签&#xff1a; 转载 分类&#xff1a; 技术 原文地址&#xff1a;chrome开启或关闭IPV6方法作者&#xff1a;余鲲涛 chrome和firefox都是…

Nginx安装部署

转&#xff1a;http://www.cnblogs.com/zhuhongbao/archive/2013/06/04/3118061.html Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器&#xff0c;也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开…

android ble 连续读写,Android BLE实现对蓝牙的读写

【实例简介】通过修改官方的demo实现对蓝牙的读写操作&#xff0c;详细http://blog.csdn.net/chenfengdejuanlian/article/details/45787123【实例截图】【核心代码】BluetoothLe_demo0└── BluetoothLe_demo0├── AndroidManifest.xml├── bin│ ├── AndroidManife…

一分钟经理人

原创2016-12-0858沈剑 零、缘起近期公司再做管理者培训&#xff0c;偶老大推荐了一本薄薄的《一分钟经理人》&#xff0c;斯宾塞.约翰逊&#xff0c;花了1小时读完有感&#xff0c;沉淀一篇阅读笔记&#xff0c;故有此文。一、前言常见经理人有两类&#xff1a;&#xff08;1&a…

python写机器人程序_用Python写的一个多线程机器人聊天程序

本人是从事php开发的, 近来想通过php实现即时通讯(兼容windows)。后来发现实现起来特别麻烦&#xff0c; 就想到python。听说这家伙在什么地方都能发挥作用。所以想用python来做通讯模块。。。所以主要学习pythonn的多线程和tcp连接。但是没有用过python&#xff0c; 所有在学习…

[转] 前端中的MVC

MVC是一种设计模式&#xff0c;它将应用划分为3个部分&#xff1a;数据&#xff08;模型&#xff09;、展现层&#xff08;视图&#xff09;和用户交互&#xff08;控制器&#xff09;。其中&#xff1a; M - MODEL&#xff08;模型&#xff09; V - VIEW&#xff08;视图&…

ipoo3可以用鸿蒙,iqooneo3支持无线充电吗_iqooneo3可以无线充电吗

iqoo neo3在不高的价格上还保证了自己的品质&#xff0c;有很高的性能&#xff0c;很不错的屏幕。那么这款手机可以支持无线充电吗&#xff1f;小编为大家介绍关于iqoo neo3的充电方面。1.iqoo neo3可以支持无线充电吗iQOO Neo3 配备了 44W 超级闪充&#xff0c;属于小刀&#…

红帽Linux故障定位技术详解与实例(1)

红帽Linux故障定位技术详解与实例(1) 2011-09-28 14:26 圈儿 BEAREYES.COM 我要评论(0) 字号&#xff1a;T | T在线故障定位就是在故障发生时, 故障所处的操作系统环境仍然可以访问&#xff0c;故障处理人员可通过console, ssh等方式登录到操作系统上&#xff0c;在shell上执行…

u2020 华为_华为5G网管U2020常用MML命令(很实用)

激活小区ACT NRCELL:;ACT NRDUCELL:;去激活小区DEA NRCELL:;DEA NRDUCELL:;查询小区静态信息LST NRCELL:;LST NRDUCELL:;查询小区动态信息DSP NRCELL:;DSP NRDUCELL:;修改帧偏置MOD GNODEBPARAM:FRAMEOFFSET70728;修改子帧配比、时隙结构MOD NRDUCELL:NRDUCELLID0,DUPLEXMODECE…