Barry,
You are unnecessarily creating an extra String object here:
//Create list (in a loop)
cityList.add(new String(rs.getString("city")));
instead, just use
cityList.add(rs.getString("city"));
-Richard
-----Original Message-----
From: Barry Volpe [mailto:[EMAIL PROTECTED]
Sent: Wednesday, October 22, 2003 2:39 PM
To: Struts Users Mailing List
Cc: [EMAIL PROTECTED]
Subject: Re: DynaForms and java.util.ArrayList"
Hi Mark,
As per Tim's suggestion I am able to use ForEach
with DynaValidatorForm.
Here is what works:
struts-config.xml:
<form-bean name="locationForm"
type="org.apache.struts.validator.DynaValidatorForm" >
<form-property
name="state"
type="java.lang.String"
initial=""/>
<form-property
name="city"
type="java.lang.String"
initial=""/>
<form-property
name="cities"
type="java.util.ArrayList"/>
</form-bean>
Action:
DynaActionForm eForm = (DynaActionForm)form;
//Create list (in a loop)
cityList.add(new String(rs.getString("city")));
eForm.set("cities",cityList);
request.setAttribute(mapping.getAttribute(), eForm);
or
request.setAttribute("locationForm", eForm);
In Jsp creates a drop down menu with cities:
<html-el:select property="city" size="1">
<html-el:option value="City">Select-A-City</html-el:option>
<c:forEach var="city" items="${locationForm.map.cities}">
<html-el:option value="${city}">
<c:out value="${city}"/>
</html-el:option>
</c:forEach>
</html-el:select>
Looks like the fine point of all of this is:
items="${locationForm.map.cities}">
Barry
----- Original Message -----
From: "Mark Lowe" <[EMAIL PROTECTED]>
To: "Struts Users Mailing List" <[EMAIL PROTECTED]>
Sent: Tuesday, October 21, 2003 11:41 AM
Subject: Re: DynaForms and java.util.ArrayList"
> I'm not sure if the forEach way works with indexed form properties. I
> tried and the html:text tags seems to be a tad oblivious to the fact
> they were nested in a loop.
>
> <form-property name="cities" type="java.util.ArrayList" />
> ..
> //also you need to scope to session
>
> <action path="/process-form" name="myForm" scope="session" ...
>
> ..
> ArrayList cityList = new ArrayList();
> cityList.add(new CityBean());
> cityList.add(new CityBean());
>
> theForm.set("cities",cityList);
>
> //you need this too for an unknown reason
> request.setAttribute("cities",cityList.toArray());
>
> ..
>
> <logic:iterate id="city" name="myForm" property="cities"> <html:text
> name="city" property="name" /> </logic:iterate>
>
> ..
>
> I've helped a few tutorial victims with this and it works for them
> too.
>
> If you have it running with the forEach tags (they work with the
> html:text or other form bits) I'd like to know..
>
> Cheers Mark
>
>
>
> On Tuesday, October 21, 2003, at 06:42 PM, Chen, Gin wrote:
>
> > Remove initial=""
> > Then in your jsp do:
> > <c:forEach var="blah" items="${myFormBean.map.city}"> <c:out
> > value="${blah}"/> </c:forEach>
> > -Tim
> >
> > -----Original Message-----
> > From: Barry Volpe [mailto:[EMAIL PROTECTED]
> > Sent: Tuesday, October 21, 2003 1:14 PM
> > To: Struts Users Mailing List
> > Subject: DynaForms and java.util.ArrayList"
> >
> >
> >
> > When I define this in my struts-config:
> >
> > <form-property
> > name="city"
> > type="java.util.ArrayList"
> > initial=""/>
> >
> > I get this error:
> >
> > [ServletException in:/tiles/locationselection.jsp] Exception
> > creating bean of class
> > org.apache.struts.validator.DynaValidatorForm: {1}'
> >
> > Can I access "city" using JSTL in my jsp.
> >
> > What should I put in my JSP.
> >
> > What am I missing?
> >
> > Thanks,
> > Barry
> >
> > --------------------------------------------------------------------
> > -
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]