将JSON对象发布到Spring Controller并使用嵌套对象进行验证

时间:2016-06-18 02:44:09

标签: java json spring validation

我正在尝试验证通过jQuery发布的嵌套对象。

以下是我的目标:

public class One {

    @Valid
    @NotNull
    Two two;

    public Two getTwo() {
        return two;
    }

    public void setTwo(Two two) {
        this.two = two;
    }

}

public class Two {

    @NotNull
    private String property;

    public String getProperty() {
        return property;
    }

    public void setProperty(String property) {
        this.property = property;
    }

}

这是我的控制器:

@RequestMapping(value="/", method=RequestMethod.POST)
@ResponseBody
public String test(@Valid One one) {
    return "Success";
}

但是,我正在发布以下JSON对象:

{
    "two": {
        "property": "test"
    }
}

我收到错误:Field error in object 'one' on field 'two': rejected value [null]; codes [NotNull.one.two,NotNull.two,NotNull.com.test.Two,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [one.two,two]; arguments []; default message [two]]; default message [may not be null]

我的JSON结构有问题还是我缺少什么?

修改 这是jQuery ajax调用:

    $.ajax({
        type: 'POST',
        url: 'my-url-here',
        data: JSON.stringify({"one":{"two":{"property": "test"}}}),
        dataType: "json",
        contentType: 'application/json'
    }).done(function(data) {
        console.log(data);
    });

1 个答案:

答案 0 :(得分:0)

将您的方法更改为:

@RequestMapping(value="/", method=RequestMethod.POST, consumes={"application/json"})
public String test(@RequestBody One one)