Thanks Adam,
I hadn't tried getting the property without the pound sign. That
syntax does work to get the value of the current item in the
iteration. However, getting the current item in the iteration isn't a
problem. My problem is that I need to access the method on the action
when in an iteration loop.
For the time being, I'm taking Dave Newton's advice on using the
index of the item in the valuestack array in order to access the
correct object when in the iteration.
I appreciate your help!
Eric Rank
On Mar 26, 2007, at 7:27 PM, Adam Ruggles wrote:
I just realized I got the syntax wrong. It should be <ww:property
value="top.user.username" /> without the pound sign, of course I'm
sure you tried that as well.
Eric Rank wrote:
Thanks Adam,
Unfortunately, that doesn't work. Are there other implicit objects
in the OGNL value stack that might give a more direect reference
to the action?
Eric.
On Mar 26, 2007, at 5:10 PM, Adam Ruggles wrote:
have you tried <ww:property value="#top.user.username" />
Eric Rank wrote:
Hi Everyone,
I'm having an interesting experience with the use of the
iterator tag (Struts 2.0.6).
I have an action with getter method signature which is the same
as the getter of an iterator item.
As such when I'm within an iterator loop, and I call the getter
of the Action value, I actually get the value of the current
item of the iterator loop. To my surprise, the iterator tag adds
the current iterator item to the value stack, such that when I
do <s:property value="%{#this}" /> I see the Action as well as
the iterator item.
When working within an iterator block, how can I get the value
of the Action's getter, instead of the iterator item's value?
------------------------
Concept code below
------------------------
<h1>Outside if the iterator, I get what I expect</h1>
<p>
<label>The User from the Action: </label>
<s:property value="%{user.name}" />
</p>
<h1>Inside the iterator tag, invoking the property tag in the
same way, I get the iterator's item</h1>
<s:iterator value="%{userBoxes}" id="userBox">
<p>
<label>Expecting the Action's user, but I get the userBox's
User</label>
<s:property value="%{user.name}" />
</p>
<p>
<label>Try using #this, but I still get the userBox's User</
label>
<s:property value="%{#this.user.name}" />
</p>
<p>
<label>This makes comparing objects in the iterator with
the action difficult.
Doing an 'equals' test should return false:
</label>
<s:property value="%{user.name.equals(userBox.user.name)}" />
</p>
</s:iterator>
---------- Java below ---------------------------
class MyAction extends ActionSupport{
private User user = null;
private List<UserBox> userBoxes = null;
//Creates a user for the action's 'user' member
//as well as a List of items with objects containing
//a method that's the same as the Action's
public String execute() throws Exception{
user = new User("Action's User");
User boxedUser = new User("Boxed User");
UserBox box = new UserBox(boxedUser)
userBoxes = new ArrayList<UserBox>();
userBoxes.add(box);
}
//Getter and setter for userBoxes
public List<UserBox> getUserBoxes(){return userBoxes;}
public void setUserBoxes(List<UserBox> boxes){userBoxes = boxes;}
//Getter and setter for the Action's User
public User getUser(){return user;}
public void setUser(User u){user = u;}
}
//Immutable User
class User{
private String name = null;
public User(String n){
name = n;
}
public String getName(){return name;}
}
//Class containing a User member
class UserBox{
private User user = null;
public UserBox(User u){
user = u;
}
//This has the same getter signature as the Action
public User getUser(){
return user;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]