struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Robert Graf-Waczenski <...@lsoft.com>
Subject Re: input fields with dynamic names
Date Tue, 04 May 2010 13:37:41 GMT
Have your Action method getAuthorizedOptions() return something like a 
Hashtable<String,MyBean>, where MyBean is your inner thingy with methods 
setWhateverProperty() and getWhateverProperty(). Then your iterator 
incantation as below:

<s:iterator value="authorizedOptions" id="o">

would deliver instances of Hashtable.Entry<String,MyBean>, which means 
that you would be able to access the dynamic current String value as 
"key" and would be able to call the MyBean method via 
value.whateverProperty. So far this is pretty standard s:iterator talk. 
Now things get a bit more complex, but Martin was correct in his 
example, but maybe the following is closer to what you need:

<s:iterator value="authorizedOptions" id="o">
<s:textfield label="Person %{key}" 
name="authorizedOptions['%{key}'].whateverProperty" />
</s:iterator>

The magic is in the "name" property, which maps to dynamic calls to 
YourActionClass.getAuthorizedOptions(keyValue).getWhateverProperty() and 
YourActionClass.getAuthorizedOptions(keyValue).setWhateverProperty() for 
each keyValue that was added to your Hashtable when you popuplated it 
from wherever your data came from.

Does this help?

Robert

Am 04.05.2010 15:20, schrieb Mitch Claborn:
> I could probably restructure my data to make it fit that model, but 
> that is not the ideal solution.  My data is structured more like a 
> hash, where the keys are essentially arbitrary and unpredictable.  Is 
> there something similar that would work with that kind of structure?
>
> Mitch
>
>
> Martin Gainty wrote:
>> //The action class contains a (dynamically populated) collection such 
>> as persons defined here
>>
>> @Result(name="list", value="listPeople.action", 
>> type=ServletRedirectResult.class)
>> public class EditPersonAction extends ActionSupport {
>>     ArrayList<Person> persons = new ArrayList()
>> <snip>
>> }
>>
>> //then the jsp makes reference to persons ArrayList from the action 
>> class and references specific rows by utilising stat.index by the 
>> s:iterator iterator
>>
>> <s:form action="submitPersonInfo" namespace="/conversion" method="post">
>> <%--
>>         The following is done Dynamically
>>     --%>
>> <s:iterator value="new int[3]" status="stat">
>> <s:textfield    label="%{'Person '+#stat.index+' Name'}" 
>>                         name="%{'persons['+#stat.index+'].name'}" />
>> <s:textfield    label="%{'Person '+#stat.index+' Age'}" 
>>                         name="%{'persons['+#stat.index+'].age'}" />
>> </s:iterator>
>>
>> this would achieve the effect of dynamically populating n number of 
>> Person objects
>>
>> does this answer the question?
>> Martin Gainty ______________________________________________ Verzicht 
>> und Vertraulichkeitanmerkung/Note de déni et de confidentialité
>>
>> Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene 
>> Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede 
>> unbefugte Weiterleitung oder Fertigung einer Kopie ist unzulaessig. 
>> Diese Nachricht dient lediglich dem Austausch von Informationen und 
>> entfaltet keine rechtliche Bindungswirkung. Aufgrund der leichten 
>> Manipulierbarkeit von E-Mails koennen wir keine Haftung fuer den 
>> Inhalt uebernehmen.
>> Ce message est confidentiel et peut être privilégié. Si vous n'êtes 
>> pas le destinataire prévu, nous te demandons avec bonté que pour 
>> satisfaire informez l'expéditeur. N'importe quelle diffusion non 
>> autorisée ou la copie de ceci est interdite. Ce message sert à 
>> l'information seulement et n'aura pas n'importe quel effet légalement 
>> obligatoire. Étant donné que les email peuvent facilement être sujets 
>> à la manipulation, nous ne pouvons accepter aucune responsabilité 
>> pour le contenu fourni.
>>
>>
>>
>>
>>> Date: Mon, 3 May 2010 09:08:29 -0500
>>> From: mitch@claborn.net
>>> To: user@struts.apache.org
>>> Subject: Re: input fields with dynamic names
>>>
>>> Bump.  Any other ideas?
>>>
>>> mitch
>>>
>>>
>>> Mitch Claborn wrote:
>>>> That works for setting parameter names, but not so well when the 
>>>> tags in the JSP need to retrieve the value for display in the page, 
>>>> particularly if there is a validation error.  If there is a static 
>>>> field named "fred" and the action has a "getFred()" method, then 
>>>> all is good.  But the field names in my case are dynamic, so I 
>>>> can't have a getNNNNN for all of the dynamic fields.
>>>>
>>>> mitch
>>>>
>>>>
>>>> Greg Lindholm wrote:
>>>>> You are probably looking for ParameterAware
>>>>>
>>>>> http://struts.apache.org/2.x/struts2-core/apidocs/org/apache/struts2/interceptor/ParameterAware.html

>>>>>
>>>>>
>>>>>
>>>>> On Wed, Apr 28, 2010 at 12:47 PM, Mitch Claborn 
>>>>> <mitch@claborn.net> wrote:
>>>>>
>>>>>> I'm sure I've seen the answer to this somewhere, but darned if I

>>>>>> can find it
>>>>>> now when I need it!
>>>>>>
>>>>>> I have a page that allows edits of various options, the names of

>>>>>> which are
>>>>>> dynamically retrieved from the database.  If I have the code in 
>>>>>> the JSP as
>>>>>> below, the value displayed in the text field is always that from
the
>>>>>> database.  If there is a validation error, the user's input value

>>>>>> is not
>>>>>> maintained as it would be if there were an explicit getter/setter

>>>>>> for each
>>>>>> option name.  Is there a way to code the Action (or the JSP) so 
>>>>>> that the
>>>>>> value shown is the user's input value if there is an error?
>>>>>>
>>>>>> <s:iterator value="authorizedOptions" id="o">
>>>>>> <s:textfield size="10" name="${o.optionName}"
>>>>>> id="${o.optionName}" value="${o.valueInt}" />
>>>>>>
>>>>>> Mitch
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------

>>>>>>
>>>>>> 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
>>>>>
>>>>>
>>>> ---------------------------------------------------------------------
>>>> 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
>>>
>>                            
>> _________________________________________________________________
>> The New Busy is not the old busy. Search, chat and e-mail from your 
>> inbox.
>> http://www.windowslive.com/campaign/thenewbusy?ocid=PID28326::T:WLMTAGL:ON:WL:en-US:WM_HMP:042010_3

>>
>
> ---------------------------------------------------------------------
> 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