如何在Spring mvc中将JSON对象从ajax传递给控制器​​?

时间:2015-08-18 12:26:00

标签: java jquery ajax json spring

我正在使用spring mvc。我需要将json对象从jsp页面传递给控制器​​。

我的ajax代码:

function createJSON() {
    jsonObj = [];
    item = {};
    $(".values").each(function() {

        var code = $(this).attr('id');
        item[code] = $('#' + code).val();
    });

    var content=JSON.stringify(item)


    $.ajax({
        type: 'POST',
        contentType : 'application/json; charset=utf-8',
        url: "/pms/season/submit", 
        data: content,
        dataType: "json",
        success : function(data) {  
            alert(response);   
        },  
        error : function(e) {  
            alert('Error: ' + e);   
        }  
    });                                                         
}

我的控制器代码:

@RequestMapping(value = "/submit", method = RequestMethod.POST)
public void saveNewUsers( @RequestParam ("json") String json) {
    System.out.println( "json  ::::"+json );
}   

但它不起作用。

1 个答案:

答案 0 :(得分:3)

@RequestParam(" json")意味着您打算在URI中包含一个名为json的请求参数,即/ submit?json = ...

我认为您打算获得请求正文,即@RequestBody。

我建议,除非你真的需要原始JSON字符串,否则你可以将@RequestBody翻译成Java对象:

public void saveNewUsers(@RequestBody MyDto myDto) {
...
}

其中MyDto将具有与JSON类匹配的getter / setter和字段。

如果使用@RestController而不是@Controller注释控制器,则可以省略@RequestBody注释。

如果您确实需要原始JSON字符串,请查看上一个问题:Return literal JSON strings in spring mvc @ResponseBody