struts中ValueStack对象的使用:

当Action设置了某个属性值后,Struts 2 将这些属性值全部封装在一个叫struts.ValueStack 的请求属性里。
在Java语句中通过ValueStack对象来获取封装输出信息的ValueStack对象,并调用ValueStack对象的findValue()方法来获取属性值。代码如下:

ValueStack vs = (ValueStack) request.getAttribute("struts.valueStack");

Object object = vs.findValue("fieldName);

案例如下 (查看书籍为例) :
1.存放书籍:

public class BookService{
	//以数组模拟数据库
	private String[] books = new String[] {
			"Struct 2.x 权威指南",
			"疯狂Java讲义"
	}

	//业务逻辑方法,返回全部图书
	public String[] getLeeBooks() {
		return books;
	}
}

2.Action中设置属性

public class BooksAction implements Action{
	//定义一个用于封装图书的属性
	private String[] books;

	public String[] getBooks() {
		return books;
	}

	public void setBooks(String[] books) {
		this.books = books;
	}

	public String execute() throw Exception{
		
		BookService bs = new BookService();
		
		setBooks(bs.getLeeBooks());  //将业务逻辑中的返回值设置为Action的属性
		
		return SUCCESS;
	}
	
}

3.迭代显示书籍

<table border="1" width="360">
	<caption>图书系统</caption>
	<%
		//获取封装输出信息的ValueStack对象
		ValueStack vs = (ValueStack)request.getAttribute("struts.valueStack");
		//获取Action中的属性值
		String[] books = (String[])vs.findValue("books");

		//迭代输出
		for(String book : books){
			%>
			<tr>
				<td>书名</td>
				<td><%=book %></td>
			</tr>
			<%
		}

	%>


</table>

for (String name : nameArray) { }:
1、String name–声明会带有数组单一元素的循环变量,数组元素的类型必须与循环变量的类型匹配,name在循环过程中会带有不同元素的值。
2、冒号(:)–代表“in”
3、nameArray–要被逐个运行的集合,这必须是对数组或其他集合的引用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值