s:iterator 用法及实例

s:iterator 的 属性 简介
属性名  是否必须 默认值 类型 说明
status false false String 默认不指定此属性,如果指定,则会创建一个IteratorStatus类的对象,此对象名即为此属性的值,下文会详细介绍
value false   String 被循环的集合,包括Map、List、set、数组
var false   String 集合中的每个元素,放到值栈中,通过此访问遍历的集合中的元素,
begin false 0 int 开始遍历的索引
end       类似begin

*IneratorStatus对象介绍:

  此类的对象封装了本次循环的相关信息,通过访问其属性获得,主要属性有:

    index:当前循环到的集合的索引

    count:已经循环的次数

    first:是否为第一次循环

    last:是否为最后一次循环

    odd:当前位置是否为奇数

    even:当前位置是否为偶数

eg:

新建类Action1.java,代码如下:

package my.test;

import com.opensymphony.xwork2.ActionSupport;

public class Action1 extends ActionSupport{
    private String[] arr=new String[5];

    //一定要添加get/set方法,否则会出现空指针异常
    public String[] getArr() {
        return arr;
    }

    public void setArr(String[] arr) {
        this.arr = arr;
    }

    public String execute(){
        int i=101;
        //下面的for循环的赋值不起作用
        for(String a:arr){
            a=""+i++;
        }
        arr[3]="this is 3";//这里验证上面的for循环对arr的赋值是不起作用的,这里由String数组和String的特性来决定,看运行结果即可
        return SUCCESS;
    }
}

新建jsp文件/iterator.jsp,记得引入Struts的标签

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <s:debug></s:debug>
    <s:iterator var="one" value="arr" begin="2" status="sta">
        <!-- 由于循环到的值保存到值栈中,所以下面通过s:property标签取值 -->
        循环到的值为:<s:property value="one"/><br>
        循环的次数为:<s:property value="#sta.count"/><br>
        循环的索引为:<s:property value="#sta.index"/><br>
        是否为奇数:<s:property value="#sta.odd"/><hr>
    </s:iterator>
</body>
</html>

最后配置文件来一个:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />

    <package name="test" namespace="/" extends="struts-default">
        <action name="iterator" class="my.test.Action1">
            <result>/iterator.jsp</result>
        </action>
        <action name="index">
            <result type="redirectAction">
                <param name="actionName">HelloWorld</param>
                <param name="namespace">/example</param>
            </result>
        </action>
    </package>

    <!-- Add packages here -->

</struts>

笔者用的是Struts2 2.3.30版本,不同版本的配置文件是不一样滴

运行一个:

上面的Debug如有疑问,自行百度~

时间: 2024-10-16 01:10:15

s:iterator 用法及实例的相关文章

Html.Listbox的用法(实例)

homecontroller控制器中的index动作代码如下: public actionresult index()        {            list<selectlistitem> list = new list<selectlistitem>()             {                 new selectlistitem(){text="张三",value="001"},              

C# Timer用法及实例讲解

摘自:http://www.cnblogs.com/xcsn/archive/2013/05/10/3070485.html 1.C# Timer用法及实例详解 http://developer.51cto.com/art/200909/149829.htm http://www.cnblogs.com/OpenCoder/archive/2010/02/23/1672043.html 关于C# Timer类  在C#里关于定时器类就有3个 C# Timer使用的方法1.定义在System.Wi

HTML常用标签用法及实例

HTML常用标签用法及实例1.<!--1.注释-->2.<!--2.DOCTPYE 声明文档类型-->3.<!--3.a--> <a href="http://www.baidu.com/">百度一下</a><br> <!--超链接标签-->4.<!--4.address <address> 标签定义文档或文章的作者/拥有者的联系信息.如果 <address> 元素位于 &

【Java学习笔记之二十二】解析接口在Java继承中的用法及实例分析

一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 接口定义的一般形式为: [访问控制符]interface <接口名> { 类型标识符final 符号常量名n = 常数: 返回值类型  方法名([参数列表]); … } 二.接口的特点 1.Java接口中的成员变量默认都是public,static,final类型的(都可省略),必须被显

with Table As QueryTable用法及实例

常用的语法结构为: With T1 AS (QueryTable:查询语句), T2 AS (QueryTable:查询语句), -- Tn AS (QueryTable:查询语句) + QueryTable :表集合 其中:QueryTable表示select 语法结构,返回一个数据集 用法实例: WITH T1 AS (SELECT SPAP_TYPE,GEND_NAME,SPAP_CUST,SPAP_DATE,CM_SORT,SPAP_NBR,SPAPD_LINE,SPAPD_PART,P

matlab sign函数用法及实例

在MATLAB科学计算过程当中,我们经常需要对我们的计算公式或者计算结果检验其符号,,sign函数就给我们提供了这种方便,下面就通过实例介绍一下matlab sign函数 的用法,希望能够给您带来帮助. 工具/原料 MATLAB 方法/步骤 我们以如下的程序为例,假如在程序执行的过程当中,x是具有一定物理意义的值,比方说代表路程,路程肯定是不会小于零的,我们函数执行的最终结果是求解y,当我们的最终结果出现问题的时候,我们很难去逐个检查对错,但是我们如果用sign函数进行一个判断,判断其正负,如果

Linux系统中切换用户身份su与sudo的用法与实例

日常操作中为了避免一些误操作,更加安全地管理系统,通常使用的用户身份都为普通用户,而非root.当需要执行一些管理员命令操作时,再切换成root用户身份去执行. 普通用户切换到root用户的方式有:su和sudo. 1,su - (su为switch user,即切换用户的简写) 格式:su -l USERNAME(-l为login,即登陆的简写) -l可以将l省略掉,所以此命令常写为su - USERNAME 如果不指定USERNAME(用户名),默认即为root,所以切换到root的身份的命

Vue.js自定义指令的用法与实例

市面上大多数关于Vue.js自定义指令的文章都在讲语法,很少讲实际的应用场景和用例,以致于即便明白了怎么写,也不知道怎么用.本文不讲语法,就讲自定义指令的用法. 自定义指令是用来操作DOM的.尽管Vue推崇数据驱动视图的理念,但并非所有情况都适合数据驱动.自定义指令就是一种有效的补充和扩展,不仅可用于定义任何的DOM操作,并且是可复用的. 比如谷歌图片的加载做得非常优雅,在图片未完成加载前,用随机的背景色占位,图片加载完成后才直接渲染出来.用自定义指令可以非常方便的实现这个功能. 效果: 自定义

mysql事务处理用法与实例详解

MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB:支持ACID事务.行级锁.并发 3.Berkeley DB:支持事务 一个事务是一个连续的一组数据库操作,就好像它是一个单一的工作单元进行.换言之,永远不会是完整的事务,除非该组内的每个单独的操作是成功的.如果在事务的任何操作失败,则整个事务将失败. 实际上,会俱乐部许多SQL查询到一个组中,将执行所有的人都一起作为事务的一部分. 事务的特性: 事务有以下四