Struts1.x系列教程(11):Validator验证框架高级应用

简介:
     《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 ="error.name.blank"   />
    < arg  name ="required"  key ="${var:required}"  position ="0"  resource ="false"   />
    < var >
        < var-name > required </ var-name >
        
< var-value > 姓名 </ var-value >
    
</ var >
</ field >
三、客户端验证
 使用Validator框架的好处之一就是可以很容易地将服务端验证变为客户端验证(JavaScript验证)。为了完成这一转换,我们只需要修改两个地方。现在就拿 《Struts1.x系列教程(10):Validator验证框架入门》中的firstValidator.jsp为例来说明要修改什么。
    首先,在firstValidator.jsp中的任何地方(当然,任何地方指的是客户端代码区,并不包括<%...%>和<%--... --%>所包含的内容)添加如下的<html:javascript>标签: 
   < html:javascript  formName ="firstValidatorForm" />
然后在<html:form>标签中加入如下的属性: 
  onsubmit = " return validateFirstValidatorForm(this); "
     现在再运行firstValidator.jsp ,如果输入错误,IE 就会直接弹出错误信息对话框。我们查看客户端源代码就会发现,在源代码中多了很多JavaScript 代码。实际上,当加入<html:javascript> 标签后,在运行JSP 页面时,Servlet 引擎就会将Validator 框架中JavaScript 版本的预定义验证代码连同HTML 代码都发送到客户端。这些JavaScript 代码中有一个入口函数,这个函数的名称前缀为validate ,后面是首字母大写的Form 名。在<html:form> 标签中的onsubmit 事件中调用这个入口函数就可以通过JavaScript 代码来验证客户端录入的数据了。





 本文转自 androidguy 51CTO博客,原文链接:http://blog.51cto.com/androidguy/215186,如需转载请自行联系原作者

相关文章
|
前端开发 Java 数据库连接
源码解析最流行的Validator框架——Hibernate Validator
源码解析最流行的Validator框架——Hibernate Validator
564 0
源码解析最流行的Validator框架——Hibernate Validator
|
XML Java Apache
验证框架 | 学习笔记
快速学习验证框架,介绍了验证框架系统机制, 以及在实际应用过程中如何使用。
75 0
|
XML 前端开发 数据安全/隐私保护
Struts2利用验证框架实现数据验证(十一)中
Struts2利用验证框架实现数据验证(十一)
144 0
Struts2利用验证框架实现数据验证(十一)中
|
XML 前端开发 Java
Struts2利用验证框架实现数据验证(十一)下
Struts2利用验证框架实现数据验证(十一)
Struts2利用验证框架实现数据验证(十一)下
|
前端开发 JavaScript 数据安全/隐私保护
Struts2利用验证框架实现数据验证(十一)上
Struts2利用验证框架实现数据验证(十一)
163 0
Struts2利用验证框架实现数据验证(十一)上
|
前端开发 Java 数据库连接
SpringMVC的数据验证和JSR 303国际化显示(十一)中
SpringMVC的数据验证和JSR 303国际化显示(十一)中
174 0
SpringMVC的数据验证和JSR 303国际化显示(十一)中
|
前端开发 Java 数据库连接
SpringMVC的数据验证和JSR 303国际化显示(十一)下
SpringMVC的数据验证和JSR 303国际化显示(十一)下
277 0
SpringMVC的数据验证和JSR 303国际化显示(十一)下
|
JavaScript Java 开发者
验证框架|学习笔记
快速学习验证框架
|
XML Java 应用服务中间件
struts框架搭建及validator示例
struts框架搭建 struts必备jar包 struts的校验(validation) struts的validation框架需要的jar包 struts的validation.xml:Local DTD is missing for publicID xwork-validator-1.0.2.dtd
401 0
struts框架搭建及validator示例
|
数据安全/隐私保护
14 Struts2 验证框架
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hxdeng/article/details/82020359 数据校验 数据校验是程序中最常见的模块。
1297 0