springMVC笔记二

如果数据绑定的过程中,类型转换出错,可以通过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";
}
View Code

 

------------------------------------

数据校验:

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的拦截器用着太爽了!

posted @ 2017-01-28 22:21  Orc_Warrior  阅读(193)  评论(0编辑  收藏  举报