springmvc4继承hibernate JSR303 模型校验支持 配置 spring4技术
Spring 4.0 拥有自己独立的数据校验框架,同时支持 JSR303 标准的校验框架。
Spring 在进行数据绑定时,可同时调用校验框架完成数据校验工作。在 Spring MVC 中,可直接通过注解驱动的方式进行数据校验
Spring 的 LocalValidatorFactroyBean 既实现了 Spring 的Validator 接口,也实现了 JSR 303 的 Validator 接口。只要在 Spring 容器中定义了一个 LocalValidatorFactoryBean,即可将其注入到需要数据校验的 Bean 中。
Spring 本身并没有提供 JSR303 的实现,所以必须将JSR303 的实现者的 jar 包(hibernate validate框架)放到类路径下。
那么我们如何在springMVC里面使用JSR303校验呢?
1)配置 LocalValidatorFactoryBean
在spring中 配置
2)handler里配置校验bean的注解 ,及错误绑定,且必须成对出现,且两个参数必须紧挨着。
通过在处理方法的入参上标注 @valid 注解即可让 Spring MVC 在完成数据绑定后执行数据校验的工作。
Spring MVC 是通过对处理方法签名的规约来保存校验结果的:前一个表单/命令对象的校验结果保存到随后的入参中,这个保存校验结果的入参必须是 BindingResult 或 Errors 类型 , BindingResult继承了Errors, 其主要方法:
FieldError getFieldError(String field) ;
List
Object getFieldValue(String field) ;
Int getErrorCount()。
具体配置:
@RequestMapping(value="/empvalid", method=RequestMethod.POST)
public String save(@Valid Employee employee, Errors[BindingResult] result){
if(result.getErrorCount() > 0){
for(FieldError error:result.getFieldErrors()){
System.out.println(error.getField() + ":" + error.getDefaultMessage());
}
//若验证出错,返回录入界面
return "input";
}
return "redirect:/emps";
}
3)对校验的bean添加注解
public class Employee {
private Integer id;
@NotEmpty
private String lastName;
private String email;
@Past
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date birth;
@NumberFormat(pattern="#,###,###.#")
@DecimalMax("88888")
@DecimalMin("100")
private Float salary;
... ...
}
4)添加 hibernate validator 框架的JAR包 (jsr 303 实现类) ,jar包资源下载,请点击另存为 jsr303jars.zip
classmate-0.8.0.jar
hibernate-validator-5.0.0.CR2.jar
hibernate-validator-annotation-processor-5.0.0.CR2.jar
jboss-logging-3.1.1.GA.jar
validation-api-1.1.0.CR1.jar
5)界面
Email:
如有疑问 请留言 欢迎提供建议
评论已有 0 条