Struts-Validate框架 (一)

2014-11-24 02:43:04 · 作者: · 浏览: 0

Validator(验证器)框架是一个 Struts 插件,它支持采用声明式的方式对表单进行校验,而不需要用户编写一行Java代码。

一.使用 Validator 框架的好处:

更好的可维护性
校验实现标准化
正确的实现
更少的代码重复
自动客户端验证

注:解压Struts的例子struts-cookbook-1.3.8,部署到web服务器中,查看例子体验。

在工程中集成validate框架,你需要查看org.apache.struts.validator包下的validator-rules.xml文件,它是validate框架的校验规则文件,这个文件说明了如何在struts工程中集成validate框架

二.集成步骤:

1、在struts-config.xml文件中配置validate插件。

2、创建资源文件,并复制validate框架工作需要的信息。

3、把struts-cookbook-1.3.8例程自带的、validate框架的配置文件validation.xml,复制到当前web工程的WEB-INF目录下。validate框架环境搭建好后,就可以采用配置的方式对formbean的属性进行校验,但需要注意:

1、formbean要想使用validate框架校验,不能直接继承 ActionForm, 而要继承其子类 ValidatorForm。

2、如果是DynaActionForm,就必须要继承DynaValidatorForm

三.validator-rules.xml校验规则文件

……




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,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"

msg="errors.required"/>
……

四.Validation.xml文件详解:

元素:为表单配置验证规则,它的 name 属性指定了表单的名字.元素可以包含一个或多个子元素
元素:配置表单中字段的验证规则
property:指定 ActionForm Bean 中需要进行验证的字段的名字
depends:指定字段的验证规则,多个验证规则之间以逗号隔开
元素:指定验证规则对应的消息文本。该消息文本将替代在 validator-rules.xml 文件中为验证规则配置的默认的消息文本
name:指定验证规则的名字
key:当 resource 为 true 时,该属性指定消息 key,该消息 key 应该在 Resource Bundle 中存在,当 resource为 false 时,该属性直接指定消息文本
resource:当该属性为true时,表明使用来自于 Resource Bundle 的消息;如果为 false,表明 直接在 key 属性中设置消息文本,默认为 true
arg 元素:替换符合消息中的参数
name,key,resource 元素同上
position 元素:指定替换符合消息中的参数的位置
var 元素:向验证规则传递参数
元素也可以访问元素,语法为${var:var-name}


五.完整示例代码:

其功能实现是:对用户名进行校验非空,并且不能小于3位,不能大于6位,对邮箱标准校验

进行浏览器客户端验证

注意:的formName指定表单的名称。onsubmit事件的值也必须为return validate表单名(this):

view plaincopy to clipboardprint <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="org.apache.struts.action.ActionErrors"%>
<%@page import="org.apache.struts.action.ActionMessage"%>
<%@taglib uri="http://struts.apache.org/tags-html" prefix="html" %>



My JSP 'register.jsp' starting page





用户名:

密码:

确认密码:

邮箱:





<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="org.apache.struts.action.ActionErrors"%>
<%@page import="org.apache.struts.action.ActionMessage"%>
<%@taglib uri="http://struts.apache.org/tags-html" prefix="html" %>



My JSP 'register.jsp' starting page





用户名:

密码:

确认密码:

邮箱:





validation.xml:

view plaincopy to clipboardprint < xml version="1.0" encoding="UTF-8" >
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd">











minlength
3


maxlength
6