我试图验证两个字段,一个是数字,另一个是url。该字段中至少有一个必须具有有效值。如果数字字段有值并且它是有效的数字,或者如果url字段存在并且它是一个有效的url,则验证通过。
我使用"requiredf"one_answers"mask"来检查这个。下面是数字检查的例子,
<field property="nombre"
depends="requiredif,mask">
<msg
name="mask"
key="errors.nombre"/>
<arg0 key="nombre"/>
<msg
name="requiredif"
key="errors.validateNombreUrl"/>
<arg0 key="nombre"/>
<var>
<var-name>mask</var-name>
<var-value>${nombre}</var-value>
</var>
<var>
<var-name>url</var-name>
<var-value>((url == null) and (*this* == null))</var-value>
</var>
</field>
以类似的方式,我也在检查url字段。但我看到验证器验证两个字段并显示错误,这样两个字段都是强制性的。我如何使它成为一个OR条件?我不确定var值中的表达式是否适合requiref,因为我发现它只适用于validwhen(由于版本问题,我无法使用)。如何在OR条件下验证这两个字段?
你没有说你使用的是哪个Struts版本,但是requireif已经被弃用了…很长一段时间。您应该使用这里描述的validwhen。这里有一个你想要的例子