struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Merr...@ibsplc.com
Subject RE: Dynamic name to the text fields
Date Mon, 02 Sep 2002 14:13:44 GMT
you r right anoop. Ive faced this difficulty many times, when you have a 
table containing textfiled in a row which can be increased dynamically. 
The only solution i found was to have the number of rows in a hidden field 
and append the index to each textfield in a row and extract the data from 
the request parameters manually within the action class. I dont know 
whether you can change the setter and getter methods of a form bean at 
runtime.

Merrill




"Anoop" <anoopra@india.hp.com>
09/02/02 05:39 PM
Please respond to "Struts Users Mailing List"

 
        To:     "'Struts Users Mailing List'" <struts-user@jakarta.apache.org>
        cc: 
        Subject:        RE: Dynamic name to the text fields


But, the same case arrises here, as in defining number of beans. How will 
be
the number of beans be pre-defined??

-Anoop.

-----Original Message-----
From: Darryl Nortje [mailto:DarrylN@astrolabegroup.com]
Sent: Monday, September 02, 2002 4:19 PM
To: 'Struts Users Mailing List'
Subject: RE: Dynamic name to the text fields


Anoop, I did it by iterating through a collection of beans, each bean in 
the
collection for eg had a getKey() and getValue() method then the jsp looks
like this.

<logic:iterate name="attrib" id="collElem">
   <tr>
      <td>
         <input name="<bean:write name="collElem" property="key"/>"/>
      </td>
   </tr>
</logic:iterate>

It's very simple but it works....

cheers
Darryl

-----Original Message-----
From: Donald Ball [mailto:dball@rhoworld.com]
Sent: Friday, August 30, 2002 4:44 PM
To: struts-user@jakarta.apache.org; anoopra@india.hp.com
Subject: Re: Dynamic name to the text fields


On 8/30/2002 at 7:28 PM Anoop wrote:

>Hi All,
>
>                I am a newbie to struts and taglibs, was trying to 
display text
fields
>dynamically using "html:iterator". Below is the scenario I was
>trying out.

You may be in luck, I've been recently trying to learn how to do something
similar myself.

<snip/>

>The html snippet for the above is something like:
>
>                <input type="text" name="org" value="Org1">
>                <input type="text" name="org" value="Org2">
>
>But I want it to be something like:
>
>                <input type="text" name="a" value="Org1">
>                <input type="text" name="b" value="Org2">
>
>Where the values("a" & "b") for the name attribute comes from an array
>defined in the Form Bean. What are the changes required in my jsp 
snippet?
>
>Also, if only it is possible to get an output as desired, does the
FormBean
>be modified to support this. As there won't be any getter/setter for "a"
>and
>"b".
>
>Appreciate any kind of help regarding this.

First, google around for "map-backed ActionForms" or similar. There's some
stuff over on jguru that might be helpful. Also, I'm trying to write
documentation for the struts user's guide for this, so I'd appreciate your
comments on how (un)clear the following is (apologies for the formatting,
my mail client sucks):

    <section name="4.2.3 Map-backed ActionForms"
href="map_action_form_classes">
      <p>The DynaActionForm classes offer the ability to create ActionForm
beans
 at initialization time, based on a list of properties enumerated in the
struts
configuration file. However, many HTML forms are generated dynamically at
request-time. Their ActionForm beans' properties are not all known ahead 
of
time, so we need a new approach.</p>
      <p>Struts allows you to make one (or more) of your ActionForm's
properties
' values a Map instead of a traditional atomic object. You can then store
your form's dynamic fields' data in that Map. Here is an example of a
map-backed ActionForm class:</p>
<pre>
<![CDATA[
public FooForm extends ActionForm {

    private final Map values = new HashMap();

    public void setValue(String key, Object value) {
        values.put(key, value);
    }

    public Object getValue(String key) {
        return values.get(key);
    }

}
]]>
</pre>
      <p>In its corresponding JSP page, you can access objects stored in
the values map using a special notation: <i>mapname(keyname)</i>. The
parantheses in the bean property name serve to indicate that the bean
property named <i>mapname</i> should be a Map, and that struts should look
at the value stored with the key <i>keyname</i> in that Map to find the
"real" property for <i>mapname(keyname)</i>.</p>
      <p>Here is a simple example:</p>
<pre>
<![CDATA[
<html:text property="value(foo)"/>
]]>
</pre>
      <p>This will call the getValue() method on FooForm with a key value
of "foo" to find the property value. To create a form with dynamic field
names, you might do something like this:</p>
<pre>
<![CDATA[
<% for (int i=0; i<10; i++) {
  String name = "value(foo-" + i + ")";
  <html:text property="<%=name%>"/><br/>
%>
]]>
</pre>
    </section>

Hope it helps, thanks in advance for any comments.

- donald


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

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



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




Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message