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
分享到:
相关推荐
Spring Boot 中使用 Validator 校验方式是一种非常实用的方法,它可以帮助我们轻松地对用户输入进行校验,从而确保数据的正确性和安全性。本文将详细介绍 Spring Boot 如何使用 Hibernate Validator 进行校验。 ...
本文将深入探讨如何在Spring MVC项目中集成并使用Hibernate Validator来实现高效、强大的数据校验功能。 一、 Hibernate Validator简介 Hibernate Validator是Hibernate组织开发的一个开源项目,它是JSR 380(Java...
SpringBoot 使用 Hibernate Validator 校验 Hibernate Validator 是 Java 中的一个验证框架,提供了许多有用的 注解来验证对象的属性。SpringBoot 项目中可以使用 Hibernate Validator 来实现数据验证。本文将详细...
综上所述,Hibernate Validator 是一个强大的校验框架,它为 Java 应用提供了标准化的数据验证方案,简化了验证逻辑的实现,提高了代码的可维护性和一致性。通过与 Spring 等框架的整合,可以轻松地在 Web 开发中...
Hibernate Validator是Java社区规范JSR 380的参考实现,它是一个强大的校验器,用于校验Java Bean中的数据。它不仅支持JSR 303 Bean Validation规范定义的基本注解,还包括了一些额外的自定义约束注解。Hibernate ...
综上所述,"validator校验所需jar包"是Java开发中必不可少的组件,它提供了一套强大且灵活的数据验证机制,帮助我们确保应用程序的数据质量和稳定性。正确理解和使用Hibernate Validator,可以极大地提升代码的质量...
总之,通过使用Hibernate Validator,我们可以轻松地在Java应用中实现强大的数据校验功能,提高代码的健壮性和用户体验。同时,由于其注解驱动的特性,使得代码更易于理解和维护。结合Spring Boot,开发者可以快速地...
本项目为基于JavaBean元数据的final-validator校验模型与自定义注解设计,包含92个文件,其中包括72个Java源文件、7个Markdown文档、5个XML配置文件、2个属性文件、1个Git忽略文件、1个LICENSE文件和其他相关文件。...
3. **验证API**:主要由`Validator`接口和`Validation`类组成,用于创建和使用校验器进行验证操作。 4. **配置**:可以通过`ValidationConfig`接口来定制验证行为,比如自定义消息模板、国际化策略等。 **二、使用...
文件名称列表中的“数据校验”可能指的是包含这些jar包的文件夹或者压缩包,其中可能包括`hibernate-validator.jar`、`validation-api.jar`、`classmate.jar`和`jboss-logging.jar`等。 总的来说,`Hibernate ...
标题:基于Gin+Vue的前后端分离文章管理系统,整合JWT鉴权、CORS跨域、Validator校验和GORM Gen数据库操作 前端来自黑马教程 一、内容概要 本文主要介绍了如何构建一个基于Gin+Vue的前后端分离文章管理系统。项目...
8. **最佳实践**: 在实际应用中,为了确保性能和用户体验,可能需要考虑异步处理大文件、分批读取和校验数据、异常处理以及友好的错误反馈机制等。 通过上述解释,我们可以看出,Java利用Apache POI和Hibernate ...
SpringMVC Validator数据校验是指在SpringMVC框架中使用Validator来实现数据校验的功能。数据校验是指对用户输入的数据进行验证,以确保数据的正确性和合法性。在SpringMVC中,Validator是用来实现数据校验的重要...
nice-validator是一个轻量级且功能强大的前端验证插件,主要应用于JavaScript环境中,用于对用户在表单中输入的数据进行实时校验。它提供了一套完整的API接口,支持自定义校验规则,灵活性极高,适用于各种复杂的...
**数据校验**:Validation是Java中用于数据验证的框架,如使用JSR-303/JSR-349(Bean Validation)标准,我们可以为实体类的属性添加校验注解,如@NotNull、@Size、@Pattern等,然后在导入数据时,通过Validator进行...
在实现BootstrapValidator校验功能时,首先需要引入BootstrapValidator的CSS和JS文件,这样才能在页面上应用它。通常情况下,通过CDN链接或者直接下载文件的方式引入。在HTML的头部(head)部分,我们需要引入对应的...
BootstrapValidator是一款基于Bootstrap框架的前端数据验证插件,它提供了丰富的验证规则和便捷的验证机制,使得在网页表单设计中能轻松实现高效且美观的数据校验。在本压缩包`bootstrapvalidator-master`中,包含了...
总的来说,Struts的全局异常控制和`common-validator`校验框架结合使用,可以帮助开发者更高效、更规范地处理应用程序中的异常情况和用户输入验证,提高应用的健壮性和用户体验。通过全局异常控制,可以确保任何未...
总结来说,基于Hibernate Validator的异步表单校验框架能够帮助开发者高效、灵活地实现数据验证,提升用户体验,同时保持代码的整洁和模块化。正确地使用这个框架,可以避免因为数据验证问题而导致的各种异常情况,...
在Java中,我们可以使用JSR 303/JSR 349提供的`javax.validation`包来实现注解式的数据校验,例如`@NotNull`、`@Size`等。然而,这些标准注解可能无法满足所有项目的特殊需求,因此我们需要创建自定义注解。自定义...