日期:2014-05-17  浏览次数:20790 次

Spring MVC Controller中的一个读入和返回都是JSON的方法怎么获取javax.validation注解的错误信息?
本帖最后由 LonelyCoder2012 于 2014-03-14 03:16:27 编辑
标题可能有点绕,看代码就明白了:
这是我的User类:

import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.Range;

public class User {
    private int id;
    private String name;
    private int age;
    private String address;

    public User() {
    }

    public User(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @NotBlank(message = "请输入姓名")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Range(min = 0, max = 200, message = "请输入真实年龄")
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @NotBlank(message = "请输入住址")
    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }


我的Controller的方法之一是这样写的:
@ResponseBody
    @RequestMapping(value = "action/add", method = RequestMethod.POST)
    public Object addUser(@RequestBody @Validated User user/*, BindingResult bindingResult*/) {
        /*if(bindingResult.hasErrors() {
               return message;
        */
        userService.saveUser(user);
        return user;
    }


addUser方法读入和输出都是JSON。

问题是:我能不能在addUser方法中获取User类的validation注解中定义的message信息并以JSON返回?
------解决方案--------------------
这个当然可以了。你需要使用 HandlerExceptionResolver。
public class BaseExceptionHandler implements HandlerExceptionResolver {

@Override
public ModelAndView resolveExceptio