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]

Reply via email to