Spring MVC 中的输入验证 Vlidator
在 Spring MVC 中有两种方式可以验证输入:1. Spring 自带的验证框架;2. 利用 JSR 303 实现,即 Java Specification Requests
Converter 和 Formatter 作用于 field 级,在 MVC 应用程序中,能够 将 String 转换或格式化成另一种 Java 类型,如 java.util.Date。
验证器作用于 object 级,决定某一个对象中的所有 field 是否均是有效的,以及是否遵循某些规则。
如果一个程序中即使用了 Formatter,又有 Validator(验证器),则其事件顺序是:在调用 Controller 期间,将会有一个或者多个 Formatter 试图将输入字符串转换成 domain 对象中的 field 值,一旦格式化成功,验证器就会介入。
Spring 验证器
为了创建 Spring 验证器,要实现 org.springframework.validation.Validator 接口。该接口有 supports 和 validate 两个方法。如果验证器可以处理指定的 Class,supports 方法将返回 true,validate 方法会验证目标对象,并将验证错误填入 Errors 对象。
Errors 对象时 org.springframework.validation.Errors 接口的一个实例。Errors 对象中包含了一系列 FieldError 和 ObjectError 对象。
package org.springframework.validation; public interface Validator { public abstract boolean supports (Class<?> clazz); public abstract void validate (Object target, Errors errros); }
工具类 ValidationUtils
org.springframework.validation.ValidationUtils 类是一个工具类,有助于编写 Spring 验证器。
JSR 303 验证
JSR 303 是正式的 Java 规范,建议使用。