Struts2中 iterator 标签对集合的迭代

iterator 标签对集合进行迭代,这里的集合包含List、Set 和数组,也可以对Map集合进行迭代。
代码片段如下:

private List<Book> books;  //定义一个List集合
public List<Book> getBooks() {
	return books;
}

public void setBooks(List<Book> books) {
	this.books = books;
}

private BookService bService = new BookService();

//获取书籍
public String getBookMethod(){
	books = BookDatabase.books;
	return "getBookOk";
}

获取List集合并迭代

	<s:iterator value="books" var="b">
		<tr>
			<td align="center"><s:property value="#b.bookName" /></td>
			<td align="center"><s:property value="#b.bookAuthor" /></td>
			<td align="center"><s:property value="#b.bookPrice" /></td>
		</tr>
	</s:iterator>

使用<s:iterator…/>标签对集合进行迭代输出时,可指定的属性:

  1. value:可选属性,该属性指定被迭代的集合。如果没有指定value属性,则迭代ValueStack栈顶的集合。

  2. var:可选属性,该属性指定将正在迭代的集合元素以该名称放入ValueStack中。

  3. status:可选属性,指定将正在迭代对象的 IteratorStatus 实例以该名称存入 Stack Context中。每次迭代都会有一个 IteratorStatus 实例,该实例提供如下方法:
    (1) int getCount():返回当前迭代几个元素
    (2)int getIndex():返回当前迭代元素的索引
    (3)boolean isEven():返回当前迭代元素的索引是否为偶数
    (4)boolean isFirst():返回当前迭代元素是否是第一个元素
    (5)boolean isLast():返回当前迭代元素是否是最后一个
    (6)boolean isOdd():返回当前迭代元素的索引是否是奇数

    用法:

<s:iterator status="st">
		<s:if test="#st.isOdd()">
			<tr>******</tr>
		</s:if>
		<s:else>******</s:else>
</s:iterator>

迭代时遇到的问题:迭代输出数据时不显示或为空,这是因为没有写入数据,封装属性是使用了 private string bName; (b代表书籍)这样的格式,使得set、get方法为 public void setbName(){…}的格式;
解决:将属性改为bookName即可,这样的set、get 方法为
public void setBookName(){…}

迭代session的值:
在这里插入图片描述

<s:iterator value="#session.fileItems" var="fItem">
	<a href="downloadAction?inputPath=${fItem.filePath}&contentType=${fItem.fileName}&downFileName=${fItem.fileName}">${fItem.fileName}</a><br>	
</s:iterator>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值