我正在使用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 );
}
但它不起作用。
答案 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