mask验证规则提供了基于正则表达式的验证机制,如:
<form name="ValidationTestForm">
<!-- Validate Social Security Number -->
<field property="ssn"
depends="required,mask">
<arg key="prompt.ssn"/>
<var>
<var-name>mask</var-name>
<var-value>^[0-9]{3}-[0-9]{2}-[0-9]{4}$</var-value>
</var>
</field>
</form>
正则表达式使用通用符号描述并解析文本,使用它你可以验证数据是否符合指定的格式。
STRUTS框架通过mask验证规则使用正则表达式。可以在var元素中指定正则表达式。
<var>
<var-name>mask</var-name>
<var-value>^[0-9]{3}-[0-9]{2}-[0-9]{4}$</var-value>
</var>
name属性必须是mask,value指定要使用的正则表达式。如果匹配则通过验证,否则验证失败。
如果你使用struts1.1及以后的版本,那么正则表达式必须以“^”开头,以“$”结尾。
举例:
^[0-9]{3}-[0-9]{2}-[0-9]{4}$
理解如下:
开头一个开头符号(^),,接着是三个0到9的字符({3}),接着是连接符号,接着是两个0到9的字符([0-9]),接着是一个连接符号(-),接着是四个0到9的字符([0-9]),,接着是一个结束符号($).
n requiredif:
在struts1.1Z中,如果一个字段的验证依赖于另一个字段,可用requiredif验证规则。
举例如下:
<!-- zipCode is required if city is null or state is null -->
<field property="zipCode" depends="requiredif">
<arg key="prompt.zipCode"/>
<var>
<var-name>field[0]</var-name>
<var-value>city</var-value>
</var>
<var>
<var-name>fieldTest[0]</var-name>
<var-value>NULL</var-value>
</var>
<var>
<var-name>field[1]</var-name>
<var-value>state</var-value>
</var>
<var>
<var-name>fieldTest[1]</var-name>
<var-value>NULL</var-value>
</var>
<var>
<var-name>fieldJoin</var-name>
<var-value>OR</var-value>
</var>
</field>
当city或state的值为空或不存在时,zipCode不能为空。
客户端不能进行requiredif验证
在struts1.1前要实现这样的 功能必须自己写代码进行验证。
field[i]对应的var-value值代表一个表单属性:
<var>
<var-name>field[0]</var-name>
<var-value>property name</var-value>
</var>
fieldTest[i]代表测试类型:
<var>
<var-name>fieldTest[i]</var-name>
<var-value>test type</var-value>
</var>
测试类型有以下三种:
NULL:
字段为NULL或空字符串
NOTNULL:
字段不为NULL或空字符串
EQUAL:
字段值为一个指定的值
如果测试类型为EQUAL,则还需定义一个元素fieldValue[i]:
<var>
<var-name>fieldValue[i]</var-name>
<var-value>literal value</var-value>
</var>
如果这个属性是一个数字的,则字面值将被转换为数值。否则字面值将当作一个字符串。
如果依赖多个字段,则须用fieldJoin变量确定这多个字段的逻辑关系:
<var>
<var-name>fieldJoin</var-name>
<var-value>logical operator</var-value>
</var>
合法的value值为AND和OR,AND表示所有依赖的字段都必须符合fieldTest规定的类型时,要验证的数据不为空;OR表示所依赖的字段有一个符合要求时要验证的数据不为空。
在struts1.2中,requiredif已被validwhen代替。
n validwhen:
如下例表示当下列事实发生时,zipCode合法有效:
1. city和state属性不为空
2. zipCode不为空
<form name="AddressForm">
<field property="zipCode" depends="validwhen">
<arg key="prompt.zipCode"/>
<var>
<var-name>
test
</var-name>
<var-value>
(((city != null) and (state != null)) or (*this* != null))
</var-value>
</var>
</field>
<form name="AddressForm">
validwhen比requiredif功能更强大。requiredif表示“如果。。。这个字段不为空”。validwhen表示“当。。。时这个字段有效”。
当你使用这个验证时,请确保验证结果能为 true
*this*符号表示要验证的字段zipCode。
评论