<form-validation>
<!--
This is a minimal Validator form file with a couple of examples.
-->
<!-- S12 -->
<formset>
<form name="DmrApplicationConfirmForm">
<field
property="insiderFlag"
depends="validwhen">
<var>
<var-name>test</var-name>
<var-value>(((*this* ==1)and(mail !=null)and(remail != null)and(mail == remail))or((*this* ==0)and(mail ==null)and(remail == null)))</var-value>
</var>
</field>
<field
property="mail"
depends="maxlength,mask">
<arg key="DmrApplicationConfirmForm.mail"/>
<var>
<var-name>maxlength</var-name>
<var-value>128</var-value>
</var>
<var>
<var-name>mask</var-name>
<var-value>^[A-Za-z0-9]+[A-Za-z0-9_//-//.]*@[A-Za-z0-9]+[A-Za-z0-9_//-//.]*//.[A-Za-z0-9]+[A-Za-z0-9_//-//.]*$</var-value>
</var>
</field>
<field
property="remail"
depends="maxlength,mask">
<arg key="DmrApplicationConfirmForm.remail"/>
<var>
<var-name>maxlength,mask</var-name>
<var-value>128</var-value>
</var>
<var>
<var-name>mask</var-name>
<var-value>^[A-Za-z0-9]+[A-Za-z0-9_//-//.]*@[A-Za-z0-9]+[A-Za-z0-9_//-//.]*//.[A-Za-z0-9]+[A-Za-z0-9_//-//.]*$</var-value>
</var>
</field>
</form>
</formset>
</form-validation>
这一段代码足以说明为题了。每个 <field>都是无关的validwhen的方法只是排出了别的变量需要required的验证,
而是通过别的变量validwhen验证是来引入,所以实现了,当标识位存在时,所要验证的东西一定要入力,当标识位不存在时就不要入力了。其他的一些与变量是不是null的验证无关的,就可以单独判断了。
mail验证的mask参数:
^[A-Za-z0-9]+[A-Za-z0-9_//-//.]*@[A-Za-z0-9]+[A-Za-z0-9_//-//.]*//.[A-Za-z0-9]+[A-Za-z0-9_//-//.]*$