Struts1Validator框架高级应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《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>
2. 变量
Validator框架通过<var>元素来定义变量。

变量将作为<field>的子元素被使用。

主要向depends属性值(如mask)以及<msg>的错误信息传递数据。

如下面的代码通过变量required将“姓名”传递给了错误信息的第一个参数{0}.
<field property="name" depends="required ">
<msg name="required" key=".blank"/>
<arg name="required" key="${var:required}" position="0" resource= "false"/>
<var>
<var-name>required</var-name>
<var-value>姓名</var-value>
</var>
</field>
三、客户端验证
使用Validator框架的好处之一就是可以很容易地将服务端验证变为客户端验证(Java Script验证)。

为了完成这一转换,我们只需要修改两个地方。

现在就拿《Struts1.x系列教程(10):Validator验证框架入门》中的firstValidator.jsp为例来说明要修改什么。

首先,在firstValidator.jsp中的任何地方(当然,任何地方指的是客户端代码区,并不包括<%……%>和<%——…… ——%>所包含的内容)添加如下的<html:javascript>标签:
<html:javascript formName="firstValidatorForm"/>
然后在<html:form>标签中加入如下的属性:
onsubmit="return validateFirstValidatorForm(this);"
现在再运行firstValidator.jsp,如果输入错误,IE就会直接弹出错误信息对话框。

我们查看客户端源代码就会发现,在源代码中多了很多Java Script 代码。

实际上,当加入<html:javascript>标签后,在运行 JSP页面时,Servlet 引擎就会将Validator框架中JavaScript版本的预定义验证代码连同HTML代码都发送到客户端。

这些 JavaScript代码中有一个入口函数,这个函数的名称前缀为validate,后面是首字母大写的Form名。

在<html:form>标签中的onsubmit 事件中调用这个入口函数就可以通过JavaScript代码来验证客户端录入的数据了。

相关文档
最新文档