`
xiaolongfeixiang
  • 浏览: 234805 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Struts2操作List的一个不解的现象

 
阅读更多

无法描述,就直接看我的代码和输出结果吧!!


在List进行操作时,发现如下问题:

 

   页面代码:

  <body>
  
  	Struts2标签:<s:property value="list.size"/><br/>
  	Struts2标签:<s:property value="list.size()"/><br/>
  	<s:iterator value="list">
		<s:property/><br/>
  	</s:iterator>
  	
  </body>
 

方法一:

 

public class ListAction {

	private List<String> list;
	
	public String execute(){
		list = new ArrayList<String>();
		list.add("Hello");
		list.add("World");
		return "OK";
	}
	public List<String> getList() {
		return list;
	}
}

 

输出结果:

Struts2标签:2
Struts2标签:2
Hello
World
 

方法二:

 

   Action的代码:

 

public class ListAction {
	
	public String execute(){
		List<String> list; 
		list = new ArrayList<String>();
		list.add("Hello");
		list.add("World");
		ActionContext.getContext().put("list", list);
		return "OK";
	}

}

输出结果:

 

Struts2标签:
Struts2标签:
Hello
World

 

 奇怪的事情发生了。只输出了一半!!

 

 

方法三:

 

  <body>
  
  	Struts2标签:<s:property value="#request.list.size"/><br/>
  	Struts2标签:<s:property value="#request.list.size()"/><br/>
  	<s:iterator value="#request.list">
		<s:property/><br/>
  	</s:iterator>
  	
  </body>
 
public class ListAction {

	public String execute(){
		List<String> list;
		list = new ArrayList<String>();
		list.add("Hello");
		list.add("World");
		ActionContext.getContext().put("list", list);
		return "OK";
	}

}

输出结果:

Struts2标签:2
Struts2标签:2
Hello
World
 

不知道为什么会出现这种情况,还望高人指点一下!!

 

 

 

 

 

 

 

0
0
分享到:
评论
4 楼 helloxyz123 2011-07-28  
OGNL的问题, 方法一list放在值栈, 方法三直接用#request去找,也符合规则,方法二是不符合OGNL表达式的,至于方法二机制问题导致这个问题。
3 楼 gallon00 2011-05-31  
据说 list.size 是通过get方法获得,而#request是从上下文中去
2 楼 xiaolongfeixiang 2010-05-01  
qingwengang 写道
这与Struts2的数据存储机制有关,具体的我也不太清楚呃。。。。

谢谢,等有时间了,研究下Struts2的源码
1 楼 qingwengang 2010-05-01  
这与Struts2的数据存储机制有关,具体的我也不太清楚呃。。。。

相关推荐

Global site tag (gtag.js) - Google Analytics