`
xiaolongfeixiang
  • 浏览: 236839 次
  • 性别: 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的数据存储机制有关,具体的我也不太清楚呃。。。。

相关推荐

    struts2迭代 Map List

    在这个场景下,我们关注的是如何在Struts2中迭代Map和List对象。这两种数据结构在Web开发中经常被用到,特别是在展示表单数据或动态渲染页面元素时。 首先,让我们深入了解`struts2-taglib`,这是一个包含Struts2...

    Struts2+ajax+json返回list.docx

    注意,`result1`是Action类中的属性,它需要有对应的getter和setter方法,这样在返回JSON时,Struts2才会将这个属性包含进去。 2. **JSP页面**: JSP页面中使用Ajax发送POST请求到服务器,获取JSON数据。`...

    struts2jar包

    Action是业务逻辑的入口点,Result表示一个操作完成后转向的页面或结果。拦截器是Struts2的一大特色,可以实现如日志、权限检查、事务控制等功能。 总的来说,Struts2是一个功能强大且成熟的MVC框架,其jar包的引入...

    struts2-scan_struts2-scan_struts2scan_scan_struts2漏洞_

    Struts2是一个非常流行的Java MVC框架,用于构建企业级Web应用程序。然而,它在历史上曾出现过多个安全漏洞,其中最著名的就是“Struts2漏洞”。这个标题和描述提到的"struts2-scan"是一种工具,专门用来检测Struts2...

    struts2项目开发

    Struts2 是一个基于 Java Web 的框架,广泛应用于 Web 应用程序的开发。下面将从 Struts2 项目开发的角度,详细介绍 Struts2 框架的应用、开发流程、技术架构、实践经验等方面的知识点。 项目需求分析 在 Struts2 ...

    struts2 最新漏洞 S2-016、S2-017修补方案 .docx

    Struts2 是一个基于 Java 的 Web 应用程序框架,由 Apache 软件基金会维护。最近,Struts2 发生了两个严重的漏洞,分别是 S2-016 和 S2-017,这两个漏洞可能会导致攻击者执行恶意代码,从而危害到网站的安全。 S2-...

    struts2数据库常用操作

    Struts2是一个流行的Java web框架,它主要用于构建MVC(模型-视图-控制器)架构的应用程序。在Struts2中实现数据库操作是常见的需求,包括查询、添加、修改和删除数据。以下将详细讲解如何在Struts2中进行这些基本...

    Struts2视频教程

    - **拦截器**:拦截器是Struts2的一个重要特性,可以在请求到达Action之前或之后执行特定的操作,如验证用户登录状态、日志记录等。 #### 四、Struts2进阶技巧 - **ModelDriven模式**:该模式允许Action实例共享同...

    struts1和struts2的区别

    - **Struts2**: 每个Action实例都只服务于一次请求,之后会被销毁。这样可以确保每个Action实例都是干净的状态,不会出现意外的数据污染。同时,这种方式也降低了内存消耗。 #### Servlet依赖 - **Struts1**: ...

    Struts2漏洞检查工具Struts2.2019.V2.3

    "Struts2漏洞检查工具Struts2.2019.V2.3"是一个专门针对这些漏洞进行检测的工具,旨在帮助开发者和网络安全专业人员识别并修复Struts2框架中的安全问题。 Struts2的安全漏洞主要包括以下几类: 1. OGNL(Object-...

    Struts2漏洞测试

    Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试...

    struts2分页代码的示例

    下面是我用Struts2做的一个分页显示实例,基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库...

    Struts2多个文件上传

    在Struts2的动作类(Action)中,你需要创建一个List类型的属性来接收这些文件。例如: ```java private List&lt;File&gt; files; private List&lt;String&gt; fileNames; private List&lt;String&gt; fileTypes; // getters and ...

    struts2 ,struts2 demo

    拦截器是Struts2的一个强大特性,可以在Action执行前后进行额外的操作,比如日志记录、权限验证、数据校验等。通过在`struts.xml`中配置拦截器栈,可以定制化Action的执行流程。 **6. OGNL(Object-Graph ...

    struts2对于checkboxlist的换行

    `checkboxlist`在Struts2中通常与一个Action类中的属性关联,用于收集用户的多选数据。在HTML中,复选框默认是按行显示的,但为了优化用户界面,我们可能希望将它们分成多列显示,这就涉及到了换行。 `...

    Struts2 demo2

    - **token**: Struts2的Token插件用于防止重复提交,通过在表单中隐藏一个唯一的令牌,每次请求都会检查令牌的唯一性和时效性,从而避免了并发操作导致的问题。 6. **tablib**: Tablib可能指的是Struts2的标签库,...

    Struts2教学视频

    Struts2是一个强大的Java web开发框架,用于构建可维护、可扩展且结构良好的应用程序。它在MVC(Model-View-Controller)设计模式的基础上提供了一种实现方式,使得开发者能够更方便地处理用户请求,控制业务逻辑,...

    struts2 总结工程大全

    struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...

    Struts2Demo2

    Struts2Demo2是一个基于Apache Struts2框架的示例应用,它展示了如何在实际开发中使用Struts2来构建动态Web项目。Struts2是一个强大的MVC(Model-View-Controller)框架,用于简化Java Web应用程序的开发过程。在这...

    struts2-core.jar

    struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...

Global site tag (gtag.js) - Google Analytics