根据我对新Struts2的理解 - 值栈存储动作对象并将动作对象的成员变量放在自身上 - 因此就像一个虚拟对象。据说在我使用struts2标签的html上,我想显示一个成员变量,但很少有同名变量。
<s:property name="memberpropertyname"/>
值堆栈从上到下访问此名称。如果顶部的那个不正确怎么办?它如何解决它并选择说出最后一个 - 这对我而言。
任何帮助请...
答案 0 :(得分:4)
如果您的应用程序实际上有合理的理由来设置值,您可以选择一些选项。但是,一般情况下,最顶层的堆栈项(通常是操作)应该是将数据暴露给视图层的东西。
您可以通过数组表示法直接访问特定堆栈深度的任何内容:
<s:property value="[1].memberProperty"/>
这会绕过堆栈中最顶层的项目,并明确显示下一个项目。
在合理的应用程序中,这几乎不是永远。在 most ,您可能需要直接访问动作属性,例如,在迭代期间,或者某些内容已被<s:push>
添加到堆栈中(也很少见)。访问动作属性很简单:
<s:property value="#action.memberProperty"/>
我建议如果您发现需要访问堆栈中的数据而不是操作,和操作会将视图模糊到那些较低层,那么您做错了。如果没有别的,无论是什么在推动动作之前将你需要的对象放到堆栈上都应该推动一个不太可能被动作暴露的对象。
例如,粘贴某些应用程序范围数据的过滤器可能使用通用名称:
<s:property value="corp.somethingUseful"/>
如果不了解您的使用情况以及这种情况如何变得难以提供更具体的帮助。我的直觉反应是出了问题。