zoukankan      html  css  js  c++  java
  • springmvc之如何对表单数据进行校验

    1、spring4.0拥有自己独立的数据校验框架,同时还支持JSR303标准。

    2、spring在进行数据绑定时,可同时调用校验框架完成数据校验工作。在springmvc中,可直接通过注解驱动的方式进行数据校验。

    3、spring的LocalValidatorFactoryBean既实现了spring的Validator接口,也实现了JSR303的Validator接口,只要在spring容器中定义一个LocalValidatorFactoryBean,即可将其注入到需要的数据校验Bean中。

    4、spring本身并没有提供JSR303的实现,所以必须将JSR所需的包放到类路径下。

    5、<mvc:annotation-driven>会默认装配好一个LocalValidatorFactoryBean,通过在处理方法的入参上标注@Valid注解即可让springmvc在完成数据绑定后执行数据校验的工作。

    6、在已经标注了JSR303注解的表单/命令对象前标注一个@Valid。springmvc框架在将请求参数绑定到入参对象后,就会调用校验框架根据注解声明的校验规则实施校验。

    7、springmvc通过对处理方法签名的约束来保存校验结果:前一个表单/命令对象的校验结果保存到随后的入参中,这个保存校验结果的入参必须是BindingResult或Errors类型,这两个类都位于org.springframework.validation包中。

    8、需校验的bean对象和其绑定结果对象或错误对象是成对出现的,它们之间不允许声明其它的入参。

    9、Errors接口提供了获取错误信息的方法,如getErrorCount()或getFieldErrors(String field)。

    10、BindingResult扩赞了Errors接口。


    加入以下包:

     

     

     

    在spingmvc.xml文件中配置:

    <mvc:annotation-driven></mvc:annotation-driven>

    然后就可以为需要的字段加上验证:

        @NotEmpty
        private String lastName;
        @Email
        private String email;

    如果发生el包的异常,我们要删除tomcat的lib文件夹下的el.api.jar,

    同时加入相匹配的包:

    el.api-2.2.jar

    javax.el-2.2.4.jar

    javax.el-api-2.2.4.jar

    在Handler中我们就可以这么使用:

        @RequestMapping(value="/emp",method=RequestMethod.POST)
        public String save(@Valid Employee employee, BindingResult result, Map<String,Object> map) {
            System.out.println("save-->"+employee);
            if (result.getErrorCount()>0) {
                System.out.println("出错了");
                for(FieldError error:result.getFieldErrors()) {
                    System.out.println(error.getField()+":"+error.getDefaultMessage());
                }
                map.put("departments", departmentDao.getDepartments());
                return "add";
            }
            employeeDao.save(employee);
            return "redirect:/emps";
        }
    
    

    用BindingResult来接收验证信息,并进行在控制台中打印错误信息,然后跳转到本修改界面。 

     

  • 相关阅读:
    对我影响最大的老师
    秋季学习总结
    介绍自己
    搭建新环境的准备工作
    我的技术博客开通啦!!
    java数组及数组的插入,删除,冒泡算法
    包(package)以及面向对象三个基本特征(继承)的介绍
    常用的Arrays类和二维数组以及二分法的介绍
    构造方法、封装、关键字(this、static)和代码块的介绍
    类和对象的介绍
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12186525.html
Copyright © 2011-2022 走看看