spring mvc @RequestBody接受post json对象

来源:互联网 发布:mac 安装apt get命令 编辑:程序博客网 时间:2024/06/05 16:42

jq ajax通过post json对象

遇到的HTTP 415/400问题错误解决方案:http://www.linuxidc.com/Linux/2014-04/99928.htm

客户端:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript"
    src="<%=basePath%>resources/scripts/jquery-2.0.3.min.js"></script>
<script type="text/javascript">
$(function(){
    $("#send").click(function(){
        var jsondata = $("#jsondata").val();
        var jsonobj = JSON.parse(jsondata)
         
        var callback = function (data) {
            $("#result").html(JSON.stringify(data))
        }
         
        $.postJSON('<%=basePath%>api/user/test', jsonobj, callback)
 
        });
    })
 
    $.postJSON = function(url, data, callback) {
        return jQuery.ajax({
            'type' 'POST',
            'url' : url,
            'contentType' 'application/json',
            'data' : JSON.stringify(data),
            'dataType' 'json',
            'success' : callback
        });
    };
</script>
</head>
<body>
    JSON对象
    <br>
    <textarea id="jsondata" cols="60" rows="5">
{"id":2,"gender":0,"mobile":"15072370640","password":"123456","accessToken":"fd6bf3dd3cca4b0ca7c9099447994dba"}
    </textarea><br>
 
    <button id="send">POST</button><br>
 
    <font color="red" id="result"></font>
</body>
</html>


spring mvc 服务端:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@RequestMapping(value="/test",method=RequestMethod.POST)
public @ResponseBody Map<String, Object> testPostJson(
        @RequestBody  UserForm userForm,
        BindingResult bindingResult) {
         
    Map<String, Object> map = new HashMap<String, Object>();
    if (bindingResult.hasErrors()) {
        map.put("errorCode""40001");
        map.put("errorMsg", bindingResult.getFieldError().getDefaultMessage());
    }
     
    map.put("user", userForm);
    return map;
}

测试:

结果

?
1
{"user":{"name":null,"id":2,"password":"123456","avatar":null,"gender":0,"mobile":"15072370640","accessToken":"fd6bf3dd3cca4b0ca7c9099447994dba"}}


注意:

@ResponseBody 导致的中文乱码问题见:http://my.oschina.NET/freegeek/blog/287127

0 0