Well, I didn't get any responses to this, but luckily I managed to
figure it out from the OGNL documentation
(http://www.opensymphony.com/ognl/html/LanguageGuide/basicExpressions.ht
ml):

Under the 'Expression Evaluation' section, it describes how you can
write this:

#variable(#object)

And have OGNL interpret the result of the first expression (#variable)
as another expression to evaluate, using the result of the parenthesized
expression (#object) as the root object for that evaluation.

So, if you have a property name in #variable, and you want to retrieve
the value of the property with that name from the object #object, you
can retrieve it by writing "#variable(#object)".

Hope this is useful to others!

~Jonathan

> -----Original Message-----
> From: Jon Pearson 
> Sent: Thursday, May 07, 2009 1:14 PM
> To: Struts Users Mailing List
> Subject: Dynamic property names
> 
> I am trying to build out a table of values. I would like the 
> user to be able to choose which columns are visible, and to 
> re-order them (not interactively, on a separate page). My 
> initial method for implementing this looks something like:
> 
> User preferences:
> <column title="i18n.property.prop1">property1</column>
> <column title="i18n.property.prop2">property2</column>
> ...
> 
> And then something like this for displaying:
> <table>
>       <tr>
>               <s:iterator value="prefs">
>                       <th><s:text name="content" /></th>
>               </s:iterator>
>       </tr>
> 
>       <s:iterator value="rows">
>               <tr>
>                       <s:iterator value="prefs">
>                               <td><s:property
> value="%{getAttribute('title')}" /></td>
>                       </s:iterator>
>               </tr>
>       </s:iterator>
> </table>
> 
> But I'm not sure how to do a double-indirection.
> %{getAttribute('title')} is going to return something like "property1"
> or "property2", but what I really want is to have OGNL go 
> back out and retrieve the value associated with that name, as 
> if I had typed '<s:property value="property1" />'. Is there a 
> way to do this?
> 
> Jonathan P. Pearson - Software Engineer
> --------------------------------------------------
> SIXNET - Solutions for Your Industrial Networking Challenges
> 331 Ushers Road, Ballston Lake, NY 12019
> Tel: 1.518.877.5173, Fax: 1.518.877.8346 www.sixnet.com
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> For additional commands, e-mail: user-h...@struts.apache.org
> 
> 

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

Reply via email to