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 Swing TextArea 滚动条和获得焦点
    Windows下一个AndroidStudio 正在使用Git(AndroidStudio工程GitHub关联)
    我们将与操作系统工作谈一场无私的爱──《云情人》思考
    CSDN markdown 编辑 三 基本语法
    Android项目包装apk和apk反编译,xml反编译
    char (*(*p[3])( int ))[5] 等等一系列 左右法则
    typedef 优于 #define
    int *(*a[5])(int, char*)
    C++宏定义详解
    STL 案例分析
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12186525.html
Copyright © 2011-2022 走看看