Struts 2 s:iterator:如何避免名称冲突?

时间:2012-11-21 00:52:11

标签: struts2

据我所知,s:iterator总是将当前项目推送到OGNL值堆栈,即使我使用var属性。这意味着当前项的所有成员都成为循环内的顶级OGNL变量,可能隐藏了Action的属性:

<s:property value="owner" /> <%-- From the Action --%>
<s:iterator value="projects" var="project">
    <s:property value="#project.owner" /> <%-- From the project, obviously --%>
    <s:property value="owner" /> <%-- Ops, also from the project! --%>
</s:iterator>
<%-- (Fun(?) fact: #project.owner is still accessible here) --%>

我们迭代的对象(通常具有多层嵌套)具有许多属性,并且它们的数量可以在以后增长。意外隐藏属性的危险是非常真实的,更糟糕​​的是,向JavaBeans添加属性可能会破坏曾经工作过的页面。

我在这里遗漏了什么吗?如何使用Struts 2 + JSP迭代复杂对象?

0 个答案:

没有答案