views:

390

answers:

1

Struts 2 will resolve all property names during view rendering against the top object in the ValueStack first. But how can one access a property with the same name on the object lower on the stack?

Example:

Let's say I have an Action class called MyAction and it has a a logDate property. In the view rendered after this action is invoked, there's this:

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

Now imagine a User object also has a logDate property. During the iteration, Struts 2 will always push the current user object to the top of the ValueStack effectively resolving all property names against it. But, what if I wanted to access logDate from the action? What's the correct way to do this?

+1  A: 

You can use an index to look at a substack. For example: [0].logDate would start the search at the stop of the stack and find the logDate on the user object. [1].logDate would start the search one level deeper and find the logDate on the Action class. This OGNL page (see the section right above the Accessing static properties header) has some more detail and here is another explanation.

Rob Tanzola
Nice! Thank you very much for this quick answer :)P.S.Is there any way to mark the question as answered?
veggen
You are quite welcome - glad it helped. There should be a hollow check mark listed next to the answer. Clicking it will turn it to green to accept it.
Rob Tanzola