Validator验证框架

系统分析

在设计Validator验证框架时,需要明确以下问题。

(1)当用户没有输入数据时,弹出英文提示信息。

(2)当用户输入的数据长度大于系统设置的数据长度,弹出英文提示信息。

(3)当用户输入的账号或密码不正确,弹出英文提示信息。

1.2 工作流程图
Validator验证框架系统流程如图1所示。

技术要点分析

1.1 技术要点
Validator验证框架在Struts应用中得到了广泛的运用,Validator验证框架主要依赖两个Jar文件。
q jakarta-oro.jar:该文件主要提供了一些文本类、具有文本替换、过滤和分割等功能。
q commons-validator.jar:该文件提供了一个简单、可扩展的验证框架,包括了通用的验证方法和规则。
在Struts中,这两个Jar文件添加到应用WEB-INF/lib目录中。
Validator框架采用两个基于XML的配置文件来配置验证规则。这两个文件为validator-rule.xml和validation.xml。在Struts中,它们均存放在WEB-INF文件夹下。

1.2 validator-rules.xml文件
validator-rules.xml文件包括了一组通用的验证规则,对所有的Struts都适用。一般情况下,没有必要修改该文件,除非需要修改或扩展默认的规则。
说明:如果想扩展默认的验证规则,最好把自定义的规则放在另一个XML文件中,而不是直接添加到validator-rules.xml文件中,这样,当升级Validator框架的版本时,不需要修改validator-rules.xml文件。
在validator-rules.xml文件中,每个<validator>元素定义了一个唯一的验证规则。例如,以下代码定义了一个名为“required”的验证规则。

<validator name="required"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequired"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
javax.servlet.http.HttpServletRequest"
msg="errors.required"/>

(1)name属性
name属性指定验证规则的逻辑名,这个名字必须是唯一的。
(2)classname和method属性
classname和method属性分别指定实现验证规则逻辑的类和方法。
(3)msg属性
msg属性制定来自于资源文件中的消息key。当验证失败时,Validator框架将根据这个消息key到资源文件中查找匹配的消息文本。
(4)depends属性
depends属性制定在调用当前验证规则之前必须先调用的其他验证规则。例如以下“maxlength”验证规则的配置代码中使用了depends属性。

<validator name="maxlength"
classname="org.apache.struts.validator.FieldChecks"
method="validateMaxLength"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
javax.servlet.http.HttpServletRequest"
depends="required"
msg="errors.maxlength"
jsFunction="org.apache.commons.validator.javascript.validateMaxLength"/>

以上代码表明,在调用“maxlength”验证规则之前,先调用“required”规则。如果depends属性包含多个验证规则,则用逗号隔开,例如:
depends="required,integer"
如果调用depends属性指定的验证规则验证失败,就不会再调用下一个规则。

1.3 valiation.xml文件
Validator框架的另一个配置文件为valiation.xml文件,这个文件用于声明Form Bean应该采用的验证例程,取代在ActionForm类中编程的方式来实现验证逻辑。下面将介绍valiation.xml文件中的元素。
(1)<form-validation>元素
<form-validation>元素是Validator配置文件的根元素,它包含两个子元素:<global>和<formset>元素。<global>元素可以出现0次或者多次,而<formset>元素可以出现一次或者多次。
(2)<global>元素
在<global>元素中可以定义<constant>子元素,它用来定义常量表达式,在文件的其余地方可以应用这些常量表达式。
(3)<formset>元素
<formset>元素包含两个子元素:<constant>和<form>。<constant>可以出现0次或者多次,<form>元素可以出现一次或者多次。

(4)<form>元素
<formset>元素的<form>子元素用于为表单配置验证规则,它的name属性指定了表单的名字。<form>元素可以包含一个或者多个<field>子元素。
(5)<field>元素
<form>元素的<field>子元素用于配置表单中的字段的验证规则。
(6)<msg>元素
<field>元素的<msg>子元素指定验证规则对应的消息文本。
(7)<arg>元素
<field>元素可以包括4个附加的子元素:<arg0>、<arg1>、<arg2>以及<arg3>,用户替换复合消息中的参数。<arg0>元素指定第一个替换值,<arg1>元素指定第二个替换值,依次类推。

(8)<var>元素

<field>元素还可以包含0个或者多个<var>元素。<var>元素用来向验证规则传递参数。

运行结果

Validator验证框架的更多相关文章

  1. Hibernate Validator验证框架中@NotEmpty、@NotBlank、@NotNull 的区别

    Hibernate Validator验证框架中@NotEmpty.@NotBlank.@NotNull的主要使用情况 @NotEmpty  用在集合类上面 @NotBlank   用在String上 ...

  2. spring MVC 使用 hibernate validator验证框架,国际化配置

    spring mvc使用hibernate validator框架可以实现的功能: 1. 注解java bean声明校验规则. 2. 添加message错误信息源实现国际化配置. 3. 结合sprin ...

  3. 学习Validator验证框架总结

    在项目开发中许多地方需要加以验证,对于使用if-else简单粗暴一个一个验证,spring的validation封装了Javax ValidationI校验参数,大大缩减了代码量. 以前的分层验证,从 ...

  4. SAR-303 xml validator验证框架

    // 配置文件详解 <mvc:annotation-driven validator="validator" /> <bean id="validato ...

  5. hibernate validate验证框架中@NotEmpty、@NotbBank、@NotNull的区别

    Hibernate Validator验证框架中@NotEmpty.@NotBlank.@NotNull 的区别 Hibernate Validator验证框架中@NotEmpty.@NotBlank ...

  6. jQuery Validate验证框架详解

    转自:http://www.cnblogs.com/linjiqin/p/3431835.html jQuery校验官网地址:http://bassistance.de/jquery-plugins/ ...

  7. strus2验证框架

    为什么要用验证框架? 当验证规划比较复杂时,Action类的代码江边的非常繁琐,假如我们要对电话号码进行验证,是非常麻烦的. 验证框架的优点 Struts2中内置了一个验证框架,将常用的验证规则进行了 ...

  8. 【积累】validate验证框架的使用

    validate验证框架的使用:用验证框架可以很方便的验证前端页面输入的内容可以自定义验证方法 内容:0:环境搭建 1:基础用法 2:自定义用法 0:基本环境的搭建 0.1:下载js文件 0.2:引入 ...

  9. Struts2验证框架实例

    今天写了个Struts验证框架的实例,总算把验证框架弄清楚了. 上一篇Struts实例的action没有继承ActionSupport类,虽然也可以实现action的功能,但是却不能应用Struts提 ...

随机推荐

  1. WPF 10天修炼 第五天- 内容控件

    WPF内容控件 在WPF中,所有呈现在用户界面上的对象都称为用户界面元素.但是只有派生自System.Windows.Controls.Control类的对象才称为控件.内容控件通常是指具有Conte ...

  2. centos7设置httpd

    1.httpd开机自启动 systemctl enable httpd.service 2.httpd开机不自启动 systemctl disable httpd.service 3.启动httpd ...

  3. Git使用教程,最详细,最傻瓜,最浅显,真正手把手教

    (预警:因为详细,所以行文有些长,新手边看边操作效果出乎你的预料)一:Git是什么?Git是目前世界上最先进的分布式版本控制系统.工作原理 / 流程:Workspace:工作区Index / Stag ...

  4. P1113 杂务 拓扑排序

    题目描述 John的农场在给奶牛挤奶前有很多杂务要完成,每一项杂务都需要一定的时间来完成它.比如:他们要将奶牛集合起来,将他们赶进牛棚,为奶牛清洗乳房以及一些其它工作.尽早将所有杂务完成是必要的,因为 ...

  5. 2018-2019-2 20175305实验一《Java开发环境的熟悉》实验报告

    2018-2019-2 20175305实验一<Java开发环境的熟悉>实验报告 实验题目 实验一Java开发环境的熟悉-1 1).实验目的及要求 1.建立"自己学号exp1&q ...

  6. SQL增删改语句

    一,插入数据 1.使用  insert ...values 语句插入单行或多行元组数据 insert  into 表名 (列名,列名,...,列名) values 值 表名:指被插入数据的表名 列名: ...

  7. linux安装vsftp服务

    如果管理一个网站,需要经常上传下载一些文件,通过scp传输吗?当然不是,太麻烦了,而且首先你需要本机是linux的系统,这时我们需要一个工具,叫ftp. ftp是文件传输协议,通过它可以很方便上传下载 ...

  8. 更新mysql驱动5.1-47 Generated keys not requested. You need to specify Statement.RETURN_GENERATED_KEY

    今天在更新mysql驱动后运行程序突然报如下错误: java.sql.SQLException: Generated keys not requested. You need to specify S ...

  9. 关于WinCC OA

    简介 WinCC OA 的全称是:SIMATIC WinCC Open Architecture,是奥地利ETM公司(ETM professional control GmbH)开发的SCADA软件系 ...

  10. 封装PDO函数

    funPDO.php <?php /** * @title: 封装PDO函数 * * @Features: * 1. 封装 SELECT ,INSERT,DELETE,UPDATE 操作 @do ...