如果数据绑定的过程中,类型转换出错,可以通过BindingResult(或者Errors)中找到,并进行国际化展示:
注意:需要校验的bean和BindingResult(或者Errors)必须挨着,之间不能有其他入参。
@RequestMapping(value="/emp", method=RequestMethod.POST) public String save(@Valid Employee employee, Errors 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 "input"; } employeeDao.save(employee); return "redirect:/emps"; }
------------------------------------
数据校验:
Hibernate Validator是jsr 303的一种扩展,他不是hibernate
实现Hibernate Validator的步骤是:
1、加jar包,hibernate-validator-5.0.0.CR2.jar、hibernate-validator-annotation-processor-5.0.0.CR2.jar等。
2、spring的上下文中要加入一个LocalValidatorFactoryBean(其实通过<mvc:annotation-driven>即可)
3、需要在handler的目标方法的入参的bean前面加上@valid注解
在页面上如何显示错误消息:
<form:errors path="email"></form:errors>
path是*的话,就会显示所有的错误消息,放在哪个字段后面,错误消息就会显示在哪里,且path写成字段的名字
Birth: <form:input path="birth"/> <form:errors path="birth"></form:errors>
------------------------------------
返回json:
1、加入三个jar包
2、在handler里面写一个方法,直接返回需要的集合(都是java类型的)
3、方法上额外加一个注解@ResponseBody
---------------------------------------
MVC的拦截器用着太爽了!