Your <html:textarea/> tag is using the 'name' attribute, which tells it to
associate itself with a specific bean instead of the containing form bean.
>> <html:textarea name="feature" property="text" indexed="true"
>>rows="3" cols="75"/>
This binds the text area to the property named 'text' on the 'feature' bean
defined by the enclosing <logic:iterate/>. That's not what you want. If you
look at the request when you submit the form I think you'll find that the
values from the text areas are submitted through a request parameter named
'text'.
Try this instead:
<html:textarea property="features" value="${feature}"/>
You might also be able to do something like
<html:textarea property="features[${i}]"/>
if you add indexId="i" to your <logic:iterate/> tag.
L.
Neil Aggarwal wrote:
Hello:
Does anyone have any ideas on how to get this to work?
Is this a bug?
Thanks,
Neil
--
Neil Aggarwal, JAMM Consulting, (214) 986-3533, www.JAMMConsulting.com
FREE! Valuable info on how your business can reduce operating costs by
17% or more in 6 months or less! http://newsletter.JAMMConsulting.com
-----Original Message-----
From: Neil Aggarwal [mailto:[EMAIL PROTECTED]
Sent: Wednesday, July 20, 2005 10:41 AM
To: 'Struts Users Mailing List'
Subject: Not getting submitted values from textarea in logic:iterate
Hello:
I have a DynaForm with some beans stored in an array:
<form-bean name="admin.editClubForm"
type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="features"
type="persistent.Feature[]"/>
</form-bean>
I have the form-bean declared as session scope for my actions:
<action path="/admin/editClubInit" type="admin.EditClubInit"
name="admin.editClubForm" scope="session">
<forward name="success" path="/admin/editClub.do"/>
</action>
<action path="/admin/editClub" forward="admin.editClub" />
<action path="/admin/editClubAction" type="admin.EditClubAction"
name="admin.editClubForm" scope="session">
<forward name="failure" path="/admin/editClub.do"/>
<forward name="success" path="/admin/showClubs.do"
redirect="true" />
</action>
The persistent.Feature class has a field text with setText and getText
accessors.
When want want to display the data, I first call /admin/editClubInit
to populate the DynaForm. Here is the code that does that:
Feature[] features = new Feature[NUM_FEATURES];
for( int i=0; i<NUM_FEATURES; i++ ) {
features[i] = new persistent.Feature("Test ["+i+"]");
}
df.set("features", features);
After populating the form, the EditClubInit action forwards
to user to the
page to
display the form. Here is the JSP code that shows the data:
<logic:iterate name="admin.editClubForm" property="features"
id="feature">
<br>
<html:textarea name="feature" property="text" indexed="true"
rows="3" cols="75"/>
</logic:iterate>
The data appears correctly on the page.
Unfortunately, when I submit the form to my action class to
process it,
I do not get the text I submitted. I get the original text that
EditClubInit prepopulated the form with.
Here is the code I am using to retrieve the data:
Feature[] features = (Feature[]) df.get("features");
for( int i=0; i<features.length; i++ ) {
System.err.println( "Feature["+i+"] is
"+features[i].getText());
}
Any ideas why this would not be working?
If you need to see more details, I can provide them.
I was trying to focus on what I thought would be helpful.
Thanks,
Neil
--
Neil Aggarwal, JAMM Consulting, (214) 986-3533, www.JAMMConsulting.com
FREE! Valuable info on how your business can reduce operating costs by
17% or more in 6 months or less! http://newsletter.JAMMConsulting.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
Laurie, Open Source advocate, Java geek and novice blogger:
http://www.holoweb.net/laurie
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]