DEVFYI - Developer Resource - FYI

Can you give me a simple example of using the requiredif Validator rule?

Struts Questions and Answers


(Continued from previous question...)

59. Can you give me a simple example of using the requiredif Validator rule?


First off, there's an even newer Validator rule called
validwhen, which is almost certainly what you want to use,
since it is much easier and more powerful.
It will be available in the first release after 1.1 ships. 
The example shown below could be coded with validwhen as:

<form name="medicalStatusForm">

<field
    property="pregnancyTest" depends="validwhen">
  <arg0 key="medicalStatusForm.pregnancyTest.label"/>
  <var>
    <var-name>test</var-name>
    <var-value>((((sex == 'm') OR (sex == 'M')) 
    AND (*this* == null)) OR (*this* != null))</test>
  </var>
</field>

Let's assume you have a medical information form
with three fields,  sex, pregnancyTest, and testResult.
If sex is 'f' or 'F', 
pregnancyTest is required. If pregnancyTest is not blank, 
testResult is required. The entry in your validation.xml 
file would look like this:

<form name="medicalStatusForm">

<field
    property="pregnancyTest" depends="requiredif">
  <arg0 key="medicalStatusForm.pregnancyTest.label"/>
  <var>
    <var-name>field[0]</var-name>
    <var-value>sex</var-value>
  </var>
  <var>
    <var-name>fieldTest[0]</var-name>
    <var-value>EQUAL</var-value>
  </var>
  <var>
    <var-name>fieldValue[0]</var-name>
    <var-value>F</var-value>
  </var>
  <var>
    <var-name>field[1]</var-name>
    <var-value>sex</var-value>
  </var>
  <var>
    <var-name>fieldTest[1]</var-name>
    <var-value>EQUAL</var-value>
  </var>
  <var>
    <var-name>fieldValue[1]</var-name>
    <var-value>f</var-value>
  </var>
  <var>
    <var-name>fieldJoin</var-name>
    <var-value>OR</var-value>
  </var>
</field>

<field
    property="testResult" depends="requiredif">
  <arg0 key="medicalStatusForm.testResult.label"/>
  <var>
    <var-name>field[0]</var-name>
    <var-value>pregnancyTest</var-value>
  </var>
  <var>
    <var-name>fieldTest[0]</var-name>
    <var-value>NOTNULL</var-value>
  </var>
</field>
</form>

(Continued on next question...)

Other Interview Questions