For an Array in a DynaForm property, you can either set the size in the form-property descriptor or, in the case of a session form, pre-populate the Array in your action with the number of elements you desire.
On 20050602 8:23 AM, "Martin Gainty" <[EMAIL PROTECTED]> wrote: > your size property is less than actualnumber of elements in ArrayList > Personally I would handle this thru a variable you can control > e.g. > "<%= size %>" > HTH, > Martin- > > ----- Original Message ----- > From: "Nitesh" <[EMAIL PROTECTED]> > To: "Struts Users Mailing List" <user@struts.apache.org> > Sent: Thursday, June 02, 2005 8:03 AM > Subject: Re: Problem using indexed properties and validator framework > > >> John, >> >> Thank you for the answer. >> >> I tried removing size with the form having session scope and it gave me >> java.lang.ArrayIndexOutOfBoundsException. >> >> Tried using ArrayList and gives me java.lang.IndexOutOfBoundsException >> >> Regards, >> >> Nitesh >> >> ----- Original Message ----- >> >> From: "John Fitzpatrick" <[EMAIL PROTECTED]> >> To: "Struts Users Mailing List" <user@struts.apache.org> >> Sent: Thursday, June 02, 2005 5:15 PM >> Subject: Re: Problem using indexed properties and validator framework >> >> >>> >>> Looks like you've got a few issues. Let me answer what I can and see if >>> that >>> helps: >>> >>> On 20050602 7:34 AM, "Nitesh" <[EMAIL PROTECTED]> wrote: >>> >>>> Hi, >>>> >>>> I'm trying to use the validator framework with dyna forms. >>>> >>>> In the JSP page I have a list of user details being listed for edit. >>>> >>>> <logic:iterate name="userList" id="userList" collection="<%= userListCol >>>> %>" >>>> type="com.sample.vo.UserDetails"> >>>> <tr> >>>> <td><html:text property="userName" indexed="true" name="userList" >>>> /></td> >>>> <td><html:text property="userAddress" indexed="true" name="userList" >>>> /></td> >>>> <td><html:text property="userCountry" indexed="true" name="userList" >>>> /></td> >>>> <td><html:text property="userZipCode" indexed="true" name="userList" >>>> /></td> >>>> <td><html:text property="userEmail" indexed="true" name="userList" >>>> /></td> >>>> <td><html:text property="userPhone" indexed="true" name="userList" >>>> /></td> >>>> </tr> >>>> </logic:iterate> >>>> >>>> I want this part to be validated on submit, and I intend to use >>>> validator >>>> framework with dynaforms. >>>> My Struts config looks like... >>>> >>>> <form-bean name="UserListAdmin" >>>> type="org.apache.struts.action.DynaActionForm"> >>>> <form-property name="userList" type="com.sample.vo.UserDetails[]" >>>> size="3" /> >>>> <form-property name="test" type="java.lang.String" /> >>>> </form-bean> >>>> >>>> >>>> >>>> and my validation.xml looks like >>>> >>>> <form name="userListAdmin"> >>>> <field property="test" depends="required"> >>>> <arg0 key="label.test"></arg0> >>>> </field> >>>> <field property="userList" depends="required" >>>> indexedListProperty="userName"> >>>> <arg0 key="label.username"></arg0> >>>> </field> >>>> <field property="userList" depends="required" >>>> indexedListProperty="userAddress"> >>>> <arg0 key="label.address"></arg0> >>>> </field> >>>> .... >>>> </form> >>>> >>>> >>>> The problems I face are: >>>> 1. When I try to use ArrayList instead of UserDetails[] for flexibility >>>> since >>>> I cannot predict the no of users in the list, I get >>>> ArrayIndexOutOfBounds >>>> exception. >>> >>> If you make your form session scoped, you can drop the size attribute >>> from >>> the 'userList' form-property. The Array will the size of the array you >>> put >>> into the form in your Action. >>> >>>> 2. The client side validation defined in the validation-rules is not >>>> generated >>>> for the indexed property. (Same page I have a non-indexed property and >>>> the >>>> client side validation is generated for this!) >>> >>> This may be a situation where you cannot generate automatic client-side >>> validation and will have to either write it yourself, or just use server >>> side validation and represent the form if you have an error. >>> >>>> 3. By using UserDetails[], I do get the list in the Action class, but >>>> validation is not happening! (again problem only for the indexed >>>> property. >>>> works fine for the normal one. >>> >>> In my experience, whenever I deal with Indexed properties, I've had to >>> create the actual Form class and put the validation into the validate >>> (...) >>> method. >>> >>> >>> --------------------------------------------------------------------- >>> 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]