springmvc之如何对表单数据进行校验

时间:2022-07-23
本文章向大家介绍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来接收验证信息,并进行在控制台中打印错误信息,然后跳转到本修改界面。