`

使用Validator校验数据

阅读更多



 17.3  使用Validator校验数据

跟Struts 1.x一样,Struts 2也提供数据校验。这种数据校验是配置式的,既可以用XML配置,也可以用Java注解(@Annotation)配置。Struts 2提供了许多默认的校验器,例如数字校验器、电子邮件校验器等,配置一下即可使用。

17.3.1  使用XML配置数据校验Validator

使用XML配置时,需要在Action类所在的package内添加一个XML文件,文件名格式为Action类名-validation.xml或者Action类名-Action别名 -validation.xml。如果Action中有多个方法,一般使用后者。例如BookAction-addBook- validation.xml、BookAction-initAdd Book-validation.xml等。支持校验的Action必须实现Validateable接口,一般继承ActionSupport就可以了。

下面对addBook.action进行校验,首先将BookAction继承ActionSupport以支持校验。校验配置XML文件名应为BookAction-addBook- validation.xml,位置与BookAction.class位于同一个包下。添加书籍时,书籍名称与作者必须填写,如果填写了日期,日期格式必须正确,并位于指定的格式内。校验配置代码如下:

代码17.10  BookAction-addBook-validation.xml

<!DOCTYPE validators PUBLIC

"-//OpenSymphony Group//XWork Validator 1.0//EN"

"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>   

    <field name="book.name">                            <!-- 检查书名-->

        <field-validator type="requiredstring">     <!-- 必需的 -->

            <param name="trim">true</param> <!-- 检查时去掉前后空格 -->

            <message>请输入书籍名称</message>     <!-- 提示信息 -->

        </field-validator>

    </field>

    <field name="book.author">                  <!-- 检查作者,必须非空 -->

        <field-validator type="requiredstring"> <!-- 必需的 -->

            <message>请输入书籍作者</message>         <!-- 提示信息 -->

        </field-validator>

    </field>

    <field name="book.publishedDate">               <!-- 检查出版日期。 -->

        <field-validator type="date">               <!-- 检查日期 -->

            <param name="min">1900-01-01</param>    <!-- 最小值 -->

            <param name="max">2200-01-01</param>    <!-- 最大值 -->

            <message><![CDATA[ 日期格式必须位于 1900-01-01 与 2200-01-01 之         间 ]]></message>

        </field-validator>

    </field>

</validators>

配置完毕后,不需要更改任何的JSP代码。Struts 2的表单标签支持校验错误信息显示(而不用像Struts 1.x那样需要用<html:error />显式地调用)。如果数据校验失败,会转到input页面显示错误信息,因此action配置中要配置名为input的JSP页面。运行效果如图17.2所示。

图17.2  xml配置式校验

17.3.2  配置客户端Validator

以上校验是在服务器端完成的。Struts 2也支持客户端JavaScript校验。方法很简单,再将JSP的<struts:form>标签添加validate="true"属性即可。Struts 2的客户端校验与Struts 1不同,Struts 1使用了提示框显示错误信息,Struts 2抛弃了烦人的提示框,显示错误方式与服务器端校验完全一样。效果同图17.2。

%提示:客户端校验是通过JavaScript实现的,因此Struts 2会自动加载相应的JavaScript类库。

17.3.3  常用的Validator

本次校验只使用了requiredstring与date校验器。Struts 2自带许多的校验器,包括字符串校验器、数字校验器、字符长度校验器、日期校验器、URL校验器、电子邮件校验器等。如果都不能满足,还可以使用正则表达式校验,正则表达式校验基本上可以满足所有的情况。

常用的Struts 2内置的校验器见表17.1。

表17.1  Struts 2常用的校验器

校  验  器

作    用

required

检查被校验域是否为null

requiredstring

检查被校验String是否为null或空,可选参数trim,在验证前对字符串执行trim操作

stringlength

检查被校验String的长度范围,可选参数trim、minLength、maxLength

int/double

检查输入是否为int/double,并且可判断数值范围,可选参数为min、max;minInclusive、maxInclusive、minExclusive、maxExclusive

date

检查date的范围,可选参数为min、max

email

检查输入是否为E-mail格式

url

检查输入是否为url格式

conversion

检查是否将出现数据转换错误

expression/fieldexpression

检查某个布尔表达式的值是否为true,后者绑定到某个字段上,参数为expression

visitor

使用预定义的validators进行验证,参数为context

regex

检查是否能匹配到正则表达式,参数为regex

17.3.4  使用@Java注解配置Validator

Struts 2也支持用Java注解配置数据校验。Action同样需要继承自ActionSupport类,并用@Validation注解,表示该Action需要数据校验。然后在方法上配置@Validations。@Validations可指定多条校验规则,具体的配置见下面的代码:

代码17.11  BookAction.java

package com.helloweenvsfei.struts2.action;

import org.apache.struts2.interceptor.validation.SkipValidation;

import com.opensymphony.xwork2.ActionSupport;

import com.opensymphony.xwork2.validator.annotations.DateRangeFieldValidator;

import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;

import com.opensymphony.xwork2.validator.annotations.Validation;

import com.opensymphony.xwork2.validator.annotations.Validations;

import com.opensymphony.xwork2.validator.annotations.ValidatorType;

@Validation                                         // 标记为需要数据校验

public class BookAction extends ActionSupport { // 继承自ActionSupport

    // 添加书籍页面

    @Validations(

            requiredStrings = {

                    @RequiredStringValidator(type = ValidatorType.SIMPLE,                   trim=true, fieldName = "book.name", message = "请输入                       书籍名称. *"),

                    @RequiredStringValidator(type = ValidatorType.SIMPLE,                   trim=true, fieldName = "book.author", message = "请输                       入书籍作者. *")

                    },

            dateRangeFields = {@DateRangeFieldValidator(type = Validator                Type.SIMPLE, fieldName = "book.publishedDate", min = "1900-01-           01", max = "2200-01-01", message = "日期必须大于 ${min} 小于             ${max}, 当前值为 ${book.publishedDate}.")}

    )

    public String add() {

        bookList.add(book);

        title = "<br/><br/>添加书籍成功<br/><br/>";

        return "success";

    }

   

    @SkipValidation                     // 书籍列表,@SkipValidation跳过校验

    public String list() {

        return "list";

    }

}

该配置与上面的XML配置是等价的。因为只对addBook.action进行校验,因此只在方法add()上添加了@Validations以及校验规则。其他不需要校验的方法需要加上@SlipValidation,否则也会被校验。

另外,使用@Validator时Struts 2默认的验证方式是全局验证模式,因此只能配置一种验证方式。如果要对同一个Action的两个方法配置两种不同的验证方式,需要重写Struts 2的默认拦截器。

%注意:被校验的Action要继承ActionSupport类,并要在action配置中指定名为input的JSP,因为Struts 2在校验失败后会自动返回input页面。

  • 大小: 55.8 KB
分享到:
评论

相关推荐

    springboot使用Validator校验方式

    Spring Boot 中使用 Validator 校验方式是一种非常实用的方法,它可以帮助我们轻松地对用户输入进行校验,从而确保数据的正确性和安全性。本文将详细介绍 Spring Boot 如何使用 Hibernate Validator 进行校验。 ...

    springmvc 使用hibernate-validator校验包

    本文将深入探讨如何在Spring MVC项目中集成并使用Hibernate Validator来实现高效、强大的数据校验功能。 一、 Hibernate Validator简介 Hibernate Validator是Hibernate组织开发的一个开源项目,它是JSR 380(Java...

    SpringBoot 使用hibernate validator校验

    SpringBoot 使用 Hibernate Validator 校验 Hibernate Validator 是 Java 中的一个验证框架,提供了许多有用的 注解来验证对象的属性。SpringBoot 项目中可以使用 Hibernate Validator 来实现数据验证。本文将详细...

    Hibernate Validator校验框架

    综上所述,Hibernate Validator 是一个强大的校验框架,它为 Java 应用提供了标准化的数据验证方案,简化了验证逻辑的实现,提高了代码的可维护性和一致性。通过与 Spring 等框架的整合,可以轻松地在 Web 开发中...

    hibernate validator 校验器

    Hibernate Validator是Java社区规范JSR 380的参考实现,它是一个强大的校验器,用于校验Java Bean中的数据。它不仅支持JSR 303 Bean Validation规范定义的基本注解,还包括了一些额外的自定义约束注解。Hibernate ...

    validator校验所需jar包

    综上所述,"validator校验所需jar包"是Java开发中必不可少的组件,它提供了一套强大且灵活的数据验证机制,帮助我们确保应用程序的数据质量和稳定性。正确理解和使用Hibernate Validator,可以极大地提升代码的质量...

    Hibernate Validator校验参数疑点难点方法详解.docx

    总之,通过使用Hibernate Validator,我们可以轻松地在Java应用中实现强大的数据校验功能,提高代码的健壮性和用户体验。同时,由于其注解驱动的特性,使得代码更易于理解和维护。结合Spring Boot,开发者可以快速地...

    基于JavaBean元数据的final-validator校验模型与自定义注解设计源码

    本项目为基于JavaBean元数据的final-validator校验模型与自定义注解设计,包含92个文件,其中包括72个Java源文件、7个Markdown文档、5个XML配置文件、2个属性文件、1个Git忽略文件、1个LICENSE文件和其他相关文件。...

    Hibernate Validator校验框架Demo

    3. **验证API**:主要由`Validator`接口和`Validation`类组成,用于创建和使用校验器进行验证操作。 4. **配置**:可以通过`ValidationConfig`接口来定制验证行为,比如自定义消息模板、国际化策略等。 **二、使用...

    hibernate-validator数据校验jar集合

    文件名称列表中的“数据校验”可能指的是包含这些jar包的文件夹或者压缩包,其中可能包括`hibernate-validator.jar`、`validation-api.jar`、`classmate.jar`和`jboss-logging.jar`等。 总的来说,`Hibernate ...

    基于Gin+Vue的前后端分离文章管理系统,整合JWT鉴权、CORS跨域、Validator校验和GORM Gen数据库操作

    标题:基于Gin+Vue的前后端分离文章管理系统,整合JWT鉴权、CORS跨域、Validator校验和GORM Gen数据库操作 前端来自黑马教程 一、内容概要 本文主要介绍了如何构建一个基于Gin+Vue的前后端分离文章管理系统。项目...

    java 利用POI对Execel表格的统一导入与校验(利用Hibernate Validator)

    8. **最佳实践**: 在实际应用中,为了确保性能和用户体验,可能需要考虑异步处理大文件、分批读取和校验数据、异常处理以及友好的错误反馈机制等。 通过上述解释,我们可以看出,Java利用Apache POI和Hibernate ...

    springmvc的validator数据校验的实现示例代码

    SpringMVC Validator数据校验是指在SpringMVC框架中使用Validator来实现数据校验的功能。数据校验是指对用户输入的数据进行验证,以确保数据的正确性和合法性。在SpringMVC中,Validator是用来实现数据校验的重要...

    nice-validator前端校验js及demo

    nice-validator是一个轻量级且功能强大的前端验证插件,主要应用于JavaScript环境中,用于对用户在表单中输入的数据进行实时校验。它提供了一套完整的API接口,支持自定义校验规则,灵活性极高,适用于各种复杂的...

    easyexcel+validation excel导入导出下载

    **数据校验**:Validation是Java中用于数据验证的框架,如使用JSR-303/JSR-349(Bean Validation)标准,我们可以为实体类的属性添加校验注解,如@NotNull、@Size、@Pattern等,然后在导入数据时,通过Validator进行...

    Bootstrapvalidator校验、校验清除重置的实现代码(推荐)

    在实现BootstrapValidator校验功能时,首先需要引入BootstrapValidator的CSS和JS文件,这样才能在页面上应用它。通常情况下,通过CDN链接或者直接下载文件的方式引入。在HTML的头部(head)部分,我们需要引入对应的...

    bootstrapvalidator

    BootstrapValidator是一款基于Bootstrap框架的前端数据验证插件,它提供了丰富的验证规则和便捷的验证机制,使得在网页表单设计中能轻松实现高效且美观的数据校验。在本压缩包`bootstrapvalidator-master`中,包含了...

    Struts的全局异常控制和common-validator校验框架

    总的来说,Struts的全局异常控制和`common-validator`校验框架结合使用,可以帮助开发者更高效、更规范地处理应用程序中的异常情况和用户输入验证,提高应用的健壮性和用户体验。通过全局异常控制,可以确保任何未...

    基于hibernate_validator的异步表单校验框架依赖文件

    总结来说,基于Hibernate Validator的异步表单校验框架能够帮助开发者高效、灵活地实现数据验证,提升用户体验,同时保持代码的整洁和模块化。正确地使用这个框架,可以避免因为数据验证问题而导致的各种异常情况,...

    自定义校验注解框架(validator)

    在Java中,我们可以使用JSR 303/JSR 349提供的`javax.validation`包来实现注解式的数据校验,例如`@NotNull`、`@Size`等。然而,这些标准注解可能无法满足所有项目的特殊需求,因此我们需要创建自定义注解。自定义...

Global site tag (gtag.js) - Google Analytics