struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Adam Ruggles <a.rugg...@gmail.com>
Subject Re: Iterator item and Action getter methods collide [S2]
Date Tue, 27 Mar 2007 01:27:43 GMT
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: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Mime
View raw message