Recipe8.8.Validating Field Equality in Struts 1.2


Recipe 8.8. Validating Field Equality in Struts 1.2

Problem

You want to validate that two fields on a form have the same value, taking advantage of the new features provided by the Validator in Struts 1.2.

Solution

Use the validwhen rule with a test expression that checks if the validated field is equals the other field. In Example 8-12, the test expression specifies the password2 field (*this*) must equal the password field for the validation to pass.

Example 8-12. Validating field equality with validwhen
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE form-validation PUBLIC           "-//Apache Software Foundation//DTD Commons Validator Rules            Configuration            "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd"> <form-validation>     <formset>         <form name="RegistrationForm">             <field property="emailAddress"                     depends="required,email">                 <arg key="prompt.emailAddress"/>             </field>             <field property="password"                     depends="required">                 <arg key="prompt.password"/>             </field>             <field property="password2"                     depends="required,validwhen">                                  <arg position="0" key="prompt.password2"/>                 <arg position="1" key="prompt.password"/>                 <msg name="validwhen" key="error.password.match"/>                 <var>                     <var-name>test</var-name>                     <var-value>(*this* == password)</var-value>                 </var>             </field>         </form>     </formset> </form-validation>

Discussion

If you compare this Solution with Recipe 8.7, you can see the same business rule is implemented without requiring a custom Validator rule. The validwhen rule used here accepts a test expression, which it evaluates. If the expression returns true, the validation passes; otherwise, the validation fails.

With validwhen, you can create expressions that reference the value of the field being validated and the value of any other property on the ActionForm. With this power in hand, creating an expression to test the equality of two fields is easy:

(*this* == password)

The left-hand operand, *this*, represents the value of the field under validation. The right-hand operand, password, represents the value of the password property from the RegistrationForm.

See Also

The validwhen rule is discussed in more detail in Recipe 8.4.

If you can't use validwhen because you are using Struts 1.1, Recipe 8.7 provides an alternate solution using a custom rule.



    Jakarta Struts Cookbook
    Jakarta Struts Cookbook
    ISBN: 059600771X
    EAN: 2147483647
    Year: 2005
    Pages: 200

    flylib.com © 2008-2017.
    If you may any questions please contact us: flylib@qtcs.net