Struts2中表达式集合对象List<T>与对象<T>的取值时遇到的变量名的问题
来源:互联网 发布:电梯三菱plc编程实例 编辑:程序博客网 时间:2024/05/23 20:15
我在action中定义了两个对象
private User user;
private List<User> users;
而后在JSP页面中进行取值
原本用的是下面这两个:一个s标签迭代,一个是表达式取值
<s:iterator value="users" var="v_user">
${v_user.name}
</s:iterator>
user.name=${user.name}
各自取出相应的值没有问题
后来异想天开改成如下形式:
<s:iterator value="users" var="user">
${user.name}
</s:iterator>
user.name=${user.name}
结果导致user.name=${user.name}取出的值永远等于s标签取出的最后一个值
将两个标签对调:
user.name=${user.name}
<s:iterator value="users" var="user">
${user.name}
</s:iterator>
user.name取得的值对s标签迭代的user.name值第一个并无影响
从这里可以猜测到,在s:iterator取值时创建了名为user的变量,与user相同,而且在取完值后仍保存在值栈的root对象,
而在取值时,优先级高于原user(这里应该不会是覆盖,如有兴趣可以去研究一下s标签源代码与值栈结构),
所以才会导致user的取值等于s:iterator标签迭代所得到的最后一个对象的值
mark!!!!!
- Struts2中表达式集合对象List<T>与对象<T>的取值时遇到的变量名的问题
- C#中List<T>对象的深度拷贝问题
- C#中List<T>对象的深度拷贝问题
- C#中List<T>对象的深度拷贝问题
- C#中List<T>对象的深度拷贝问题
- 往新建的泛型集合List<T>中添加对象
- java向List<T>添加对象的问题
- 将DataTable转换为List<T>对象遇到问题:类型“System.Int64”的对象无法转换为类型“System.Int32”
- c# 中 List能对T对象排序的方法
- 【C#】List<T>对象的深复制
- C#中List<T>对象的深度拷贝问题 (Clone)
- C#中IList<T>与List<T>的区别
- C#中IList<T>与List<T>的区别感想
- List<T>泛型集合根据对象的某一属性排序
- List<T>与IList<T>的区别
- struts2中关于list对象注入的问题
- <T> List<T>的用法
- list集合中根据对象排序的问题
- fedora软件更新错误:There are unfinished transactions remaining. Please run yum-complete-transaction as
- 面试题
- 2012总结--第7篇--财务篇
- 读<<打造Facebook>>要点索引
- javascript的解析
- Struts2中表达式集合对象List<T>与对象<T>的取值时遇到的变量名的问题
- Jquery中LigerUi插件的获取Grid中的行数据!
- 强大的wine,新手的天堂啊
- 优秀程序员值得借鉴的一些信息
- linux双网卡配置
- 聊聊并发(一)——深入分析Volatile的实现原理
- 游戏启动脚本
- 2013.1.11
- 修改 Ubuntu ulimit 限制