<logic:iterate>使用
<logic:iterate> 是Logic 标签库中最复杂的标签,也是用途最广的一个标签,它能够在一个循环中遍历数组、Collection、Enumeration、Iterator 或 Map 中的所有元素。
1. 遍历集合
<logic:iterate> 的 name 属性指定需要进行遍历的集合对象, 它每次从集合中检索出一个元素, 然后把它放在page 范围内, 并以id 属性指定的字符串来命名这个元素, 例如:
以上代码先定义了一个Vector 类型的集合变量 Animals, 它存放在request 范围内. 接下来<logic:iterate> 标签在一个循环中遍历Animals 集合(这个集合名就是在标签中的name 属性的值)中所有元素, 每次检索到一个元素, 就把它命名为"element"(标签id 属性的值), 并存放在page 范围内.
在<logic:iterate> 中, 还嵌套了一个<bean:write>标签, 它用于输出每个元素的内容. 以上代码的输出内容如下:
Dog
Cat
Bird
Chick
length 属性指定需要遍历的元素的数目, 如果没有设置length 属性, 就遍历集合中的所有元素.
offset 属性指定开始遍历的起始位置, 默认值为 "0" , 表示从集合的第一个元素开始遍历.
indexId 属性定义一个代表当前遍历元素序号的变量, 这个变量被存放在 page 范围内, 可以被标签主体的<bean:write> 标签访问. 例如:
2. 遍历Map
以上代码先定义一个名为"months" 的HashMap, 存放在request 范围内. 接下来在<logic:iterate> 标签遍历months 对象的每一个元素, 每一个元素包含一对 key/value . 在<logic:iterate> 标签主体中包含三个<bean:write> 标签, 分别输出每个元素的序号、key 和 value. 以上代码的输出内容如下:
以上代码先定义一个名为"catelog" 的HashMap , 存放在request 范围内, 它的每个元素的value 为字符串数组.
接下来外层的<logic:iterate>标签遍历HashMap 中的所有元素, 内层的<logic:iterate>标签访问每个元素的value 属性, 遍历value 属性引用的字符串数组中的所有元素.
3. 设置被遍历的变量
可以通过以下方式来设置需要遍历的变量
(1) 设置name 属性, name 属性指定需要遍历的集合或Map, 例如:
(2) 设置name 属性和property 属性, name 属性指定一个JavaBean, property 属性指定JavaBean 的一个属性, 这个属性为需要遍历的集合或Map, 例如:
(3) 设置collection 属性, collection 属性指定一个运行时表达式, 表达式的运算结果为需要遍历的集合或Map, 例如:
4. 读取JavaBean 中的数据
(1) 在Jsp 页面中加入JavaBean 如:
(3) 在JavaBean 中的集合对象中存放实体对象的语句如下:
...... public class GetArticleClasses { // 数据集合 private Collection coll; // 返回数据集合 public Collection getColl() { return coll; } // 构造函数, 取出数据,存入集合中 public GetArticleClasses() { coll = new ArrayList(); try{ // 数据库连接 Connection connection = DBConnection.getConnection(); if(connection != null) { Statement statement = connection.createStatement(); ResultSet resultset; ArticleClass articleclass; resultset = statement.executeQuery("SELECT * FROM table ORDER BY id"); while( resultset.next()) { articleclass = new ArticleClass(); articleclass.setId(resultset.getInt("id")); articleclass.setClassId(resultset.getString("class")); articleclass.setClassName(resultset.getString("name")); coll.add(articleclass)) } resultset.close(); connection.close(); } else { coll = null; } } catch(Exception exception) { coll = null; } } }