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]