使用validwhen设计复杂的Struts表单验证

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

通过Struts 1.2提供的validwhen 验证器可以轻松的创建更加复杂灵活的表单验证。

比如说,我们要验证用户两次输入的密码是否相同,或是只有当用户填写表单项“姓氏”时,表单项“名字”才是必须的。

validwhen 需要声明一个叫test的var字段,这个变量的值是一个布尔型的表达式,比如:

<var-name>test</var-name>

<var-value>((orderLines[].partNumber == null) or (*this* != null))</var-value>

当布尔型表达式返回true时,验证才会成功。下边是允许发入该表达式的一些元素:

单引号或双引号括起来的字符串十进制、十六进制或八进制表示的整形字面量null 表示没有输入的空串可以使用表单里的任何字段名字,如 customerAge显式引用的索引字段,如childLastName[2]隐式引用的索引字段,如childLastName[],表示使用与该字段相同的索引字面量 *this* 表示当前被验证的表单

例:

下边这段代码表示:只有当sendNewsletter字段为空,或该字段emailAddress不为空时,该字段才有效

<field property="emailAddress" depends="validwhen">

<arg0 key="userinfo.emailAddress.label"/>

<var>

<var-name>test</var-name>

<var-value>((sendNewsletter == null) or (*this* != null))</var-value>

</var>

</field>

下边这个例子表示,只有相应的partNumber存在时,字段quantity才是必须的

下边这个例子表示,只有相应的partNumber存在时,字段quantity才是必须的

<field property="quantity" indexedListProperty="orderLines" depends="validwhen">

<arg0 key="orderform.quantity.label"/>

<var>

<var-name>test</var-name>

<var-value>((orderLines[].partNumber == null) or (*this* != null))</var-value>

</var>

</field>

下边这个例子表示,如果输入身高小于60英寸,则不能做nbaPointGuard

下边这个例子表示,如果输入身高小于60英寸,则不能做nbaPointGuard

<field property="nbaPointGuard" depends="validwhen">

<arg0 key="careers.nbaPointGuard.label"/>

<var>

<var-name>test</var-name>

<var-value>((heightInInches >= 60) or (*this* == null))</var-value>

</var>

</field>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航