Alex, This kind of behavior is pretty advanced, but it should be supported by the type conversion. Suppose your action is FooAction, just add the following to FooAction-conversion.properties:
Collection_rows = java.util.HashMap Then in your HTML, you could name the elements: rows[0]{'foo'} rows[1]{'bar'} rows[2]{'baz'} Because Ognl supports this syntax for Maps, you could also name the elements: rows[0].foo rows[1].bar rows[2].baz This technique might be nicer if you want to use a Row object. To do that, you'd leave the "rows[0].foo" naming convention and just change FooAction-conversion.properties to be: Collection_rows = com.acme.Row Patrick > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of > Alexandru Roman > Sent: Tuesday, February 10, 2004 9:32 AM > To: [EMAIL PROTECTED] > Subject: [OS-webwork] dynamic form submission > > If I am generating a dynamic row based form, how can I submit the form > elements to the action in a structured manner. > > I know it is possible to submit form elements as a collection by giving > the fields the same name as in: > (the same would work for multi select checkboxes) > > <INPUT type="textbox" name="addField" value="field value1"> > <INPUT type="textbox" name="addField" value="field value2"> > <INPUT type="textbox" name="addField" value="field value3"> > > I would like to take it one step furthur and be able to submit data as > a table with an arbitrary number of rows. > > A collection of hashes would be good way. For example: > > <INPUT type="textbox" name="row[0]{field1}" value="row 1 field > value1"> > <INPUT type="textbox" name="row[0]{field2}" value="row 1 field > value2"> > <INPUT type="textbox" name="row[0]{field3}" value="row 1 field > value3"> > > <INPUT type="textbox" name="row[1]{field1}" value="row 2 field > value1"> > <INPUT type="textbox" name="row[1]{field2}" value="row 2 field > value2"> > <INPUT type="textbox" name="row[1]{field3}" value="row 3 field > value3"> > > ... > > > So the action would have a setter for rows: > > public void setRows(Collection row) { > > //print out the rows > Iterator it = row.iterator(); > while(it.hasNext()) { > HashMap rowData = (HashMap)it.next(); > System.out.println(rowData.get("field1")); > System.out.println(rowData.get("field2")); > System.out.println(rowData.get("field3")); > } > > Even better would be to map it directly to a value object for the row > if possible > > public void setRows(Collection row) { > > //print out the rows > Iterator it = row.iterator(); > while(it.hasNext()) { > Row rowData = (Row)it.next(); > System.out.println(rowData.getField1()); > System.out.println(rowData.getField2()); > System.out.println(rowData.getField3()); > } > > So in essence webworks could parse the form element name as > "ObjectName[ObjectIndex]{FieldName}". > > thanks, > > Alex. > > > ------------------------------------------------------- > The SF.Net email is sponsored by EclipseCon 2004 > Premiere Conference on Open Tools Development and Integration > See the breadth of Eclipse activity. February 3-5 in Anaheim, CA. > http://www.eclipsecon.org/osdn > _______________________________________________ > Opensymphony-webwork mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork ------------------------------------------------------- SF.Net is sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps & Web services for Linux with a free DVD software kit from IBM. Click Now! http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click _______________________________________________ Opensymphony-webwork mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork