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。

评论