Struts 2 - 访问ValueStack上共享相同名称的不同属性

时间:2010-05-30 14:28:23

标签: struts2 ognl valuestack

Struts 2将在视图渲染期间首先解析ValueStack中顶级对象的所有属性名称。但是如何在堆栈下方的对象上访问具有相同名称的属性呢?

示例:

假设我有一个名为MyAction的Action类,它有一个logDate属性。在调用此操作后呈现的视图中,有以下内容:

<s:iterator value="users" status="itStatus">
  <s:property value="logDate"/>
</s:iterator>

现在假设User对象也有一个logDate属性。在迭代期间,Struts 2将始终将当前用户对象推送到ValueStack的顶部,从而有效地解析所有属性名称。但是,如果我想从动作中访问logDate怎么办?这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

您可以使用索引查看子包。例如: [0] .logDate将在堆栈停止时开始搜索,并在用户对象上找到logDate。 [1] .logDate会更深入地开始搜索,并在Action类中找到logDate。这个OGNL page(请参阅访问静态属性标题上方的部分)有更多详细信息,这是另一个explanation