假设有下面这个Action
public class Action{ public User user; Public List<Role> allRole; // getter and setter for user and role }
然后,有下面这两个POJO
public class User { private int id; // getter and setter for id }
public class Role { private List<User> user; // getter and setter for user }
页面与上面的Action进行绑定,且在页面中,像下面这样使用了 iterator 标签
<s:iterator value="allRole" var="role"> <s:property value="user.id"> </s:iterator>
页面的本意是,在遍历 action 中 allRole 的时候,同时将 action 中 user 的id 给输出出来。
但是,你发会现,将无法获取action中user对象中的id。这是为什么呢?
因为在 iterator标签 中,通过 var 属性 声明的变量 'role' (代表了 Role 类)将被压入Struts2的 valuestack 中,且处于valuestack中第0个元素的位置。然后,OGNL在解析 ‘user.id’ 表达式 的时候,会从valuestack的第0个元素去查找。也就是说,它将先从上面的 ‘role’ 变量进行查找。恰好的是,这个 ‘role’ 变量所代表的 Role 类中,刚好也包含一个 名为 ‘user’ 的字段。这样一来,OGNL 就不会再去找 action中的user变量了。
所以,为了避免这个问题的发生,可以采用以下两个方式
① 修改字段名称,使得 action中和role中不要存在同名变量名
② 通过指定下标,让OGNL解析的的时候,直接从 valuestack 的指定元素进行查找,如上例可以修改为:
<s:property value="[1].user.id"/>
这样一来,OGNL就可跳过 valuestack中的第0个元素,直接从第 1 个元素开始查找 user,这样就没问题了。
相关推荐
struts2中iterator 标签的使用详解
struts2 标签iterator使用我自己试过的
其实只有一点struts2 iterator标签遍历二维数组
一个运用Extjs,Struts2, json,iterator技术构建的iterator_jsonDemo2。iterator_jsonDemo1的链接:http://download.csdn.net/detail/cafebar123/8816409 运用了Extjs,Struts2, json,iterator技术, 将数据从...
struts2 中标签的使用 这段时间学习用struts2来开发网站,其中对一些struts2的标签在实际操作上有一些体会。 一.关于iterator迭代集合对象的问题:
NULL 博文链接:https://takeme.iteye.com/blog/1663239
可对struts2 标签如<iterator>等相应列进行求和.
6.7.2 Struts 2中常用的表达式语言特性 131 6.7.3 表达式语言的高级特性 135 6.8 小结 137 第7章 UI组件标签 139 7.1 为什么需要UI组件标签 139 7.2 标签、模板和主题 144 7.2.1 标签 146 7.2.2 模板 146 7.2.3 ...
struts2中siterator 标签的使用详解 及 OGNL用法 struts2中siterator 标签的使用详解 及 OGNL用法
Struts 2 标签库(文档手册) Tags-API-CLSW-JSP <%@ taglib prefix="s" uri="/struts-tags" %> 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. <s:a href=""></s:a>-...
NULL 博文链接:https://shupili141005.iteye.com/blog/667446
struts2标签详解 Iterator
<%@ taglib uri="/struts-tags" prefix="s" %> 结合例子,重点掌握以下标签的用法 (1) (2) (3) <s:if> 、、 (4) <s:iterator> (5) (6) 、 (7) 、、、 (8) 、、<s:checkboxlist>
action:直接调用一个Action,根据executeResult参数,可以将Action的处理结果包含到页面中。 bean:创建一个JavaBean实例。。 date:格式化输出一个日期属性。 debug:生成一个调试链接,当单击该链接时,可以看到...
主要介绍Strus2中的通用标签,主要有, , , , , , <s:iterator>, , , 等几个标签的具体用法,希望能对大家有帮助。
该文档 主要描述struts2 常用的一些标签 帮助 对struts标签存在 疑惑的朋友更好更迅速的了解和学习
9.2.2 Struts2Action范围属性文件国际化应用 187 9.2.3 Struts2临时范围属性文件国际化应用 188 9.3 用户主动选择国际化应用介绍 191 第10章 Struts2页面布局实现 194 10.1 sitemesh基本使用方法 194 10.2 sitemesh...
因为count属性值为3,所以只有前三个内容(aaa,bbb,ccc)在生成的iterator中。 Generate an iterator with count attribute ,bbb,ccc,ddd,eee'}" count="3"> <s:iterator> <s:property /><br/> </s:iterator> ...
01 Struts2-Action 5 一、 Struts作用: 5 二、 搭建Struts2的运行环境: 5 三、 Namespace 6 四、 标签 6 五、 Action 6 六、 路径问题的说明 8 七、 Action的动态调用方法 8 八、 Action通配符(wildcard)的配置 9 ...
webwrok iterator标签status属性使用方法 一看就明白 很清楚