The condition you have specified means that addressLine1 is only valid when
everything is not null. Thats why you always get the error - you need an OR
condition. In order to get appropriate "required" messages for the various
fields, how about something along the following lines....
<field property="addressLine1">
<var> <var-name>test</var-name>
<var-value>( (this != null) OR (
(addressLine2 == null) AND
((city == null) AND
((state == null) AND
((zip == null) AND
((zip4 == null) AND
(country == null))))))
</var-value>
</var>
</field>
<field property="city">
<var> <var-name>test</var-name>
<var-value>((this != null) OR (addressLine1 == null))</var-value>
</var>
</field>
<field property="state">
<var> <var-name>test</var-name>
<var-value>((this != null) OR (addressLine1 == null))</var-value>
</var>
</field>
<field property="zip">
<var> <var-name>test</var-name>
<var-value>((this != null) OR (addressLine1 == null))</var-value>
</var>
</field>
<field property="country">
<var> <var-name>test</var-name>
<var-value>((this != null) OR (addressLine1 == null))</var-value>
</var>
</field>
Niall
----- Original Message -----
From: "Todd Nine" <[EMAIL PROTECTED]>
To: "Struts Users Mailing List" <[email protected]>
Sent: Friday, February 25, 2005 7:21 PM
Subject: Complex Validation with validwhen and large condition
> Hi all,
> I'm having some issues getting validwhen to perform the way I want
> it to. I would like the following general functionality.
>
> 1. The user can input an aseAddress.
> 2. The address as a whole is nullable, however if they fill in any of
> the fields, they must filling ALL of the address fields.
>
> Here are my properties
>
> aseAddress.addressLine1
> aseAddress.addressLine2
> aseAddress.city
> aseAddress.state
> aseAddress.zip
> aseAddress.zip4
> aseAddress.country
>
>
> addressLine2 and zip4 are not required. However, if any field in the
> list above contains data, then all of the fields except for
> addressLine2 and zip4 are required.
>
> Here is an example contition I have tried, but I contantly get that
> the fields are required, even when they are all empty. If anyone who
> has a better way, please let me know.
>
>
>
> <field property="aseAddress.addressLine1" depends="validwhen, mask">
> <arg0 key="prompt.common.addressLine1" />
> <var>
> <var-name>mask</var-name>
> <var-value>${allvalid}</var-value>
> </var>
> <var>
> <var-name>test</var-name>
> <var-value>
> (
> (
> (
> (
> (
> (
> (*this* != null)
> and (aseAddress.addressLine2 != null)
> ) and (aseAddress.city != null)
> ) and (aseAddress.state != null)
> ) and (aseAddress.postalCode4 != null)
> ) and (aseAddress.country != null)
> ) and (aseAddress.postalCode != null)
> )
> </var-value>
> </var>
> </field>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]