发布网友 发布时间:2023-08-25 19:03
共1个回答
热心网友 时间:2024-12-03 20:16
在《Struts x系列教程( ) 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属性
二 使用常量和变量
常量
在《Struts x系列教程( ) Validator验证框架入门》一文中的name属性使用了mask进行验证 这个mask实际上代表了一个正则表达式 但如果在validator xml文件中有很多个地方需要用到这个正则表达式 那就它就会在很多地方重复 为此 我们可以使用常量来避免这种事情发生
常量分为全局常量和局部常量
( )全局常量
全局常量可以被用在validator xml中定义的所有form中 我们可以使用<global>元素来配置全局常量 为了配置全局常量 将如下的内容放到第一个<formset>元素的前面
<global> <constant> <constant name>mask</constant name> <constant value> ^[a zA Z ]*$ </constant value> </constant> </global> <formset>
( )局部常量
局部常量需要放到<formset>元素的开始位置(根据DTD的定义 局部常量只能放到这里 而全局常量可以放在第一个<formset>元素的前面 也可以放到<formset>的后面) 如下面的代码所示
<formset> <constant> <constant name>mask</constant name> <constant value> ^[a zA Z ]*$ </constant value> </constant> <form name= firstValidatorForm > </formset>
我们可以编写如下的代码来使用mask常量
<var> <var name>mask</var name> <var value> ${mask}</var value></var>
变量
Validator框架通过<var>元素来定义变量 变量将作为<field>的子元素被使用 主要向depends属性值(如mask)以及<msg>的错误信息传递数据 如下面的代码通过变量required将 姓名 传递给了错误信息的第一个参数{ }
<field property= name depends= required > <msg name= required key= error name blank /> <arg name= required key= ${var:required} position= resource= false /> <var> <var name>required</var name> <var value>姓名</var value> </var></field>
三 客户端验证
使用Validator框架的好处之一就是可以很容易地将服务端验证变为客户端验证(JavaScript验证) 为了完成这一转换 我们只需要修改两个地方 现在就拿《Struts x系列教程( ) Validator验证框架入门》中的firstValidator jsp为例来说明要修改什么
首先 在firstValidator jsp中的任何地方(当然 任何地方指的是客户端代码区 并不包括<%……%>和<%——…… ——%>所包含的内容)添加如下的< javascript>标签
<:javascript formName= firstValidatorForm />
然后在< form>标签中加入如下的属性
onsubmit= return validateFirstValidatorForm(this);
lishixin/Article/program/Java/ky/201311/28301