February 2005
Intermediate to advanced
528 pages
12h 53m
English
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.
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>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. ...