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]

Reply via email to