首页 / 软件开发 / JAVA / Struts1.x系列教程(11):Validator验证框架高级应用
Struts1.x系列教程(11):Validator验证框架高级应用2011-01-10 BlogJava 银河使者在《Struts1.x系列教程(10):Validator验证框架入门》一文中给出的例子中的name、age和email都是简单的属性,如果是嵌套的属性(也就是一个属性的数据类型是另外一个带有属性的类),可以使用圆点(.)符号来访问。如我们可以通过设置<field>元素的property属性值为“employee.salary”来验证employee属性中的salary属性。如果要验证的索引属性,我们可以使用<field>元素的indexedListProperty属性来指定这个索引属性,如下面代码如示:<field indexedListProperty="items" depends=……>……</field>在使用上述配置代码后,Validator框架将会按着depends属性中的约束来验证items属性的每一个值。我们还可以将property和indexedListProperty配合使用,如下面代码所示:<field indexedListProperty="items" property="employee.age" depends=……>……</field>Validator框架将根据上述的配置代码来验证items属性中的每一项的employee.age属性。二、使用常量和变量1. 常量在《Struts1.x系列教程(10):Validator验证框架入门》一文中的name属性使用了mask进行验证。这个mask实际上代表了一个正则表达式。但如果在validator.xml文件中有很多个地方需要用到这个正则表达式,那就它就会在很多地方重复。为此,我们可以使用常量来避免这种事情发生。 常量分为全局常量和局部常量。(1)全局常量全局常量可以被用在validator.xml中定义的所有form中。我们可以使用<global>元素来配置全局常量。为了配置全局常量,将如下的内容放到第一个<formset>元素的前面。<global>
<constant>
<constant-name>mask</constant-name>
<constant-value>^[a-zA-Z0-9]*$</constant-value>
</constant>
</global>
<formset>(2)局部常量局部常量需要放到<formset>元素的开始位置(根据DTD的定义,局部常量只能放到这里,而全局常量可以放在第一个<formset>元素的前面,也可以放到<formset>的后面)。如下面的代码所示:<formset>
<constant>
<constant-name>mask</constant-name>
<constant-value>^[a-zA-Z0-9]*$</constant-value>
</constant>
<form name="firstValidatorForm">……
……
</formset>我们可以编写如下的代码来使用mask常量:<var>
<var-name>mask</var-name>
<var-value>${mask}</var-value>
</var>