- 内容提要
- 作者简介
- 译者简介
- 前言
- HTTP
- Servlet 和 JSP
- 下载 Spring 或使用 STS 与 Maven/Gradle
- 手动下载 Spring
- 使用 STS 和 Maven/Gradle
- 下载 Spring 源码
- 本书内容简介
- 下载示例应用
- 第 1 章Spring 框架
- 第 2 章模型 2 和 MVC 模式
- 第 3 章Spring MVC 介绍
- 第 4 章基于注解的控制器
- 第 5 章数据绑定和表单标签库
- 第 6 章转换器和格式化
- 第 7 章验证器
- 第 8 章表达式语言
- 第 9 章JSTL
- 第 10 章国际化
- 第 11 章上传文件
- 第 12 章下载文件
- 第 13 章应用测试
- 附录 A Tomcat
- 附录 B Spring Tool Suite 和 Maven
- 附录 C Servlet
- 附录 D JavaServer Pages
- 附录 E 部署描述符
7.2 Spring 验证器
从一开始,Spring 就设计了输入验证,甚至早于 JSR 303(Java 验证规范)。因此,Spring 的 Validation 框架至今都很普遍,尽管对于新项目,一般建议使用 JSR 303 验证器。
为了创建 Spring 验证器,要实现 org.springframework.validation.Validator 接口。这个接口如清单 7.1 所示,其中有 supports 和 validate 两个方法。
清单 7.1 Spring 的 Validator 接口
package org.springframework.validation;
public interface Validator {
boolean supports(Class<?> clazz);
void validate(Object target, Errors errors);
}如果验证器可以处理指定的 Class,supports 方法将返回 true。validate 方法会验证目标对象,并将验证错误填入 Errors 对象。
Errors 对象是 org.springframework.validation.Errors 接口的一个实例。Errors 对象中包含了一系列 FieldError 和 ObjectError 对象。FieldError 表示与被验证对象中的某个属性相关的一个错误。例如,如果产品的 price 属性必须为负数,并且 Product 对象被验证为负数,那么就需要创建一个 FieldError。例如,在欧洲出售的一本 Book,却在美国的网店上购买,那么就会出现一个 ObjectError。
编写验证器时,不需要直接创建 Error 对象,因为实例化 ObjectError 或 FieldError 花费了大量的编程精力。这是因为 ObjectError 类的构造器需要 4 个参数,FieldError 类的构造器则需要 7 个参数,如以下构造器签名所示:
ObjectError(String objectName, String[] codes, Object[] arguments,
String defaultMessage)
FieldError(String objectName, String field, Object rejectedValue,
boolean bindingFailure, String[] codes, Object[] arguments,
String defaultMessage)给 Errors 对象添加错误的最容易的方法是:在 Errors 对象上调用一个 reject 或者 rejectValue 方法。调用 reject,会往 FieldError 中添加一个 ObjectError 和 rejectValue。
下面是 reject 和 rejectValue 的部分方法重载:
void reject(String errorCode)
void reject(String errorCode, String defaultMessage)
void rejectValue(String field, String errorCode)
void rejectValue(String field, String errorCode,
String defaultMessage)大多数时候,只给 reject 或者 rejectValue 方法传入一个错误码,Spring 就会在属性文件中查找错误码,获得相应的错误消息。还可以传入一个默认消息,当没有找到指定的错误码时,就会使用默认消息。
Errors 对象中的错误消息,可以利用表单标签库的 Errors 标签显示在 HTML 页面中。错误消息可以通过 Spring 支持的国际化特性本地化。关于国际化的更多信息,请查看第 10 章。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论