请通过浏览器功能收藏网页

springmvc4继承hibernate JSR303 模型校验支持 配置 spring4技术

发布时间:2018-10-30 21:59:17  作者:本站编辑  来源:本站原创  浏览次数:
我有话说 | 分享 |
www.javainfo.com.cn 上干货 欢迎收藏

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中  配置后,会默认注入一个LocalValidatorFactoryBean。

2)handler里配置校验bean的注解  ,及错误绑定,且必须成对出现,且两个参数必须紧挨着。

通过在处理方法的入参上标注 @valid 注解即可让 Spring MVC 在完成数据绑定后执行数据校验的工作。

Spring MVC 是通过对处理方法签名的规约来保存校验结果的:前一个表单/命令对象的校验结果保存到随后的入参中,这个保存校验结果的入参必须是 BindingResult 或 Errors 类型 , BindingResult继承了Errors, 其主要方法:

            FieldError getFieldError(String field) ;

            ListgetFieldErrors() ;

            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;

                        @Email

                        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