<logic:iterate>主要用来处理在页面上输出集合类,集合一般来说是下列之一:


1、 java对象的数组



2、 ArrayList、Vector、HashMap等



具体用法请参考struts文档,这里不作详细介绍



现在定义一个class,User.java 把它编译成User.class



package example;



import java.io.Serializable;

public final class User implements Serializable {

private String name = null;

private String password = null;



public String getName () {

return (this.name);

}



public void setName(String name) {

this.name = name;

}



public String getPassword () {

return (this. password);

}



public void setPassword (String password) {

this. password = password;

}



}



然后在一个struts webapplication中创建一个jsp,例如iterate.jsp







<%@ page language="java" %>

<%@ page import="example.*"%>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>



<%

java.util.ArrayList list = new java.util.ArrayList();

User usera=new User();

usera.setName("white");

usera.setPassword("abcd");

list.add(usera);

User userb=new User();

userb.setName("mary");

userb.setPassword("hijk");

list.add(userb);

session.setAttribute("list", list);



%>



<html><body><table width="100%">



<logic:iterate id="a" name="list" type=" example.User ">



<tr><td width="50%">



name: <bean:write name="a" property="name"/>



<td/><td width="50%">



password: <bean:write name="a" property="password"/>



</td></tr>



</logic:iterate>



</table></body></html>

将User.class, iterate.jsp放到相应的目录,运行iterate.jsp你就可以看到iterate的效果了



iterate标记

id 脚本变量的名称,它保存着集合中当前元素的句柄。

name 代表了你需要叠代的集合,来自session或者request的属性。

type 是其中的集合类元素的类型



bean 的write标记是用来将属性输出的,name用来匹配iterate的id,property用来匹配相应类的属 性<logic:iterate>用法详解22007-04-04 20:34<login:iterate>标记用于在页面中创建一个循环,以此来遍历如数组、Collection、Map这样的对象。该标 记的功能强大,在Struts应用的页面中经常使用到。


1、对数组进行循环遍历

使用<logic:iterate>标记可以用于遍历数组,以下是一段示例代码:

程序代码<%

String[] testArray={"str1","str2","str3"};

pageContext.setAttribute("test",testArray);

%>

<logic:iterate id="show" name="test">

<bean:write name="show"/>

</logic:iterate>

在上面的代码中,首先定义了一个字符串数组,并为其初始化。接着,将该数组存入pageContext对象中,命名为test1。然后使 用<logic:iterate>标记的name属性指定了该数组,并使用id来引用它,同时使用<bean:write>标记 来将其显示出来。其结果为:


str1

str2

str3



另外,还可以通过length属性来指定输出元素的个数。如下面的代码:

程序代码<logic:iterate id="show" name="test" length="2" offset="1">

<bean:write name="show"/>

</logic:iterate>

其中length属性指定了输出元素的个数,offset属性指定了从第几个元素开始输出,如此处为1,则表示从第二个元素开始输出。所以该代码的运行结果应当输出:

str2

str3



另外,该标记还有一个indexId属性,它指定一个变量存放当前集合中正被访问的元素的序号,如:

程序代码<logic:iterate id="show" name="test" length="2" offset="1" indexId="number">

<bean:write name="number"/>:<bean:write name="show"/>

</logic:iterate>

其显示结果为:

1:str2

2:str3



2、对HashMap进行循环遍历

程序代码<%

HashMap countries=new HashMap();

countries.put("country1","中国");

countries.put("country2","美国");

countries.put("country3","英国");

countries.put("country4","法国");

countries.put("country5","德国");

pageContext.setAttribute("countries",countries);

%>

<logic:iterate id="country" name="countries">

<bean:write name="country" property="key"/>:

<bean:write name="country" property="value"/>

</logic:iterate>

在bean:write中通过property的key和value分别获得HaspMap对象的键和值。其显示结果为:

country5:德国

country3:英国

country2:美国

country4:法国

country1:中国

由结果可看出,它并未按添加的顺序将其显示出来。这是因为HaspMap是无序存放的。



3、嵌套遍历

程序代码<%

String[] colors={"red","green","blue"};

String[] countries1={"中国","美国","法国"};

String[] persons={"乔丹","布什","克林顿"};

ArrayList list2=new ArrayList();

list2.add(colors);

list2.add(countries1);

list2.add(persons);

pageContext.setAttribute("list2",list2);

%>

<logic:iterate id="first" name="list2" indexId="numberfirst">

<bean:write name="numberfirst"/>

<logic:iterate id="second" name="first">

<bean:write name="second"/>

</logic:iterate>

<br>

</logic:iterate>

运行效果:

0 red green blue

1 中国 美国 法国

2 乔丹 布什 克林顿

struts1标签之的更多相关文章

  1. struts1标签-<html:radio> 使用注意事项

    struts1标签-<html:radio> 使用注意事项 1.默认选中效果 在后台XxxForm中写入如下代码,可保证默认选中效果实现: @Override public void re ...

  2. struts1标签(html:text)

    这个标签可能是出现频率最高的标签了. 功能: <html:text/>产生HTML语句: <input type=”text”…> 也就是在页面上产生input类型的显示标签. ...

  3. Struts1标签

    Struts1 标签库  说明 Struts提供了五个标签库,即:HTML.Bean.Logic.Template和Nested. HTML 标签 : 用来创建能够和Struts 框架和其他相应的HT ...

  4. Struts1 标签库 说明

    Struts提供了五个标签库,即:HTML.Bean.Logic.Template和Nested. HTML标签 : 用来创建能够和Struts 框架和其他相应的HTML 标签交互的HTML 输入表单 ...

  5. struts1 标签引入

    1 tld文件导入 目录结构如下 2 jsp 文件头部标签引入 <%@ page pageEncoding="gbk" contentType="text/html ...

  6. struts1标签库

    Struts提供了五个标签库,即:HTML.Bean.Logic.Template和Nested. HTML标签 : 用来创建能够和Struts 框架和其他相应的HTML 标签交互的HTML 输入表单 ...

  7. struts1 logic:iterate bean:write标签使用

    只是截取项目中部分代码,供参考及日后查阅 用struts1标签html:select 展现select下拉列表 刚开始为如下代码: <html:select name="Shuiwuj ...

  8. struts1使用select标签

    今天使用struts1标签的时候总是出错,后来查了一下,好像不能和什么标签混用.就只用了html原来的标签实现 <select name="newsType_id"> ...

  9. struts1四:常用标签

    struts1支持的5种标签: HTML 标签: 用来创建能够和Struts 框架和其他相应的HTML 标签交互的HTML 输入表单 Bean 标签: 在访问JavaBeans 及其属性,以及定义一个 ...

  10. 【转】Struts1.x系列教程(4):标签库概述与安装

    转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/0 ...

随机推荐

  1. auto_ptr|unique_ptr|shared_ptr|weak_ptr|你都搞明白了吗?

    前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量干货博客汇总https://blog. ...

  2. 2.2 实验:UPX脱壳--《恶意代码分析实战》

    Lab01-02.exe 实验内容: 1.将文件上传到http://www.VirusTotal.com 进行分析并查看报告.文件匹配到了已有的反病毒软件特征吗? 2.是否有这个文件被加壳或混淆的任何 ...

  3. Delphi 官方 MD5

    去官方文档搜就行了,引入System.Hash 单元: http://docwiki.embarcadero.com/Libraries/Athens/en/System.Hash.THashMD5 ...

  4. JS leetcode 最长公共前缀 题解分析

    壹 ❀ 引 今天做的又是一道让我沮丧的题,思路有,但是代码逻辑最后还是没能正确理出来,题名为最长公共前缀,题目如下: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 ...

  5. 【Unity3D】相机

    1 简介 ​ 相机用于渲染游戏对象,每个场景中可以有多个相机,每个相机独立成像,每个成像都是一个图层,最后渲染的图层在最前面显示. ​ 相机的属性面板如下: Clear Flags:设置清屏颜色,Sk ...

  6. Vuex中的核心方法

    Vuex中的核心方法 Vuex是一个专为Vue.js应用程序开发的状态管理模式,其采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.每一个Vuex应用的核心就是 ...

  7. 使用GDI时如何确定是否有内存泄漏

    在创建GDI对象时,比如创建笔,画刷等对象时,在调用完之后忘记删除对象了,会造成内存泄漏 我们可以通过任务管理器来快速的查看 启动任务管理器(右键单击Windows任务栏以选择任务管理器) 在Wind ...

  8. 【Android逆向】脱壳项目frida_dump 原理分析

    脱dex核心文件dump_dex.js 核心函数 function dump_dex() { var libart = Process.findModuleByName("libart.so ...

  9. 案例分享:Qt工程机械真空激光焊接系统软件产品定制(西门子PLC,mysql数据库,用户权限控制,界面配置,参数定制,播放器,二维图标,rgv小车,期限控制,参数调试等)

    需求   1.触摸屏控制,按照客户需求,ui由本司美工承担设计,显示分辨率1280 x 1024,同时支持鼠标操作.  2.权限控制:三种权限,分为管理员(可以定制模块界面,修改产品名称等定制化软件和 ...

  10. dotnet nuget的命令行上传(推送/发布)包到Nexus 3

    1.让Visual Studio在生成的时候也生成NuGet的包 在项目上点右键,选"属性",然后设置生成的时候制作NuGet的包. 英文版在这里打勾: 中文版在这里打勾: 重新生 ...