If you remove the size attribute, it will be the size that you pre-populate
in your Action. If you do not create the Array in your action, the size will
be 0.




On 20050602 8:03 AM, "Nitesh" <[EMAIL PROTECTED]> wrote:

> 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]

Reply via email to