我对spring mvc3很新,我正在看一个jquery handontable示例。
这是我的jsp页面的一部分,其中包含表单
<form:form action="${pageContext.request.contextPath}/app/${application.id}/user/bulkImport" method="POST">
<div id="dataTable"></div>
<script>
var data = [
["156428", "admin,SCC,Superuser"],
["839302", "SCC"]
];
$("#dataTable").handsontable({
data: data,
startRows: 3,
startCols: 2
});
</script>
<script>
function submitEntries(){
alert("in");
var tableData = $("#dataTable").handsontable("getData");
var formDataJson = JSON.stringify({"data":tableData});
jQuery.ajax({
url: 'bulkImport',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: formDataJson,
'success': function (e) {
var resultString = 'saved';
$('#serverResults').html(resultString);
}
});
}
</script>
控制器:
@RequestMapping(value="/bulkImport", method = RequestMethod.POST)
public String importUsers(@RequestBody BulkUserImportEntries entries)
throws Exception {
Iterator itr = entries.getData().iterator();
while(itr.hasNext()) {
Object obj = (Object)itr.next();
}
return "redirect:/app/{appId}/user/{id}";
}
BulkUserImportEntries类:
public class BulkUserImportEntries implements Serializable{
private List<Object[]> data;
protected BulkUserImportEntries() {}
protected BulkUserImportEntries(List<Object[]> data) {
this.data = data;
}
public List<Object[]> getData() {
return data;
}
}
我在提交表单时遇到此错误。
内容类型'application / x-www-form-urlencoded'不支持
我想从我的jsp接收值的数组,以便能够在控制器上迭代它。我在示例中看到这是可能的,但这是使用modelAttribute。再次,我很新,并已在这里坚持了一个星期:(
感谢所有帮助
答案 0 :(得分:1)
问题在于,当我们使用 application / x-www-form-urlencoded 时,Spring并不将其理解为RequestBody。所以,如果我们想要使用它 我们必须删除 @RequestBody 注释。
然后尝试以下方法:
@RequestMapping(value="/bulkImport", method = RequestMethod.POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public String importUsers(BulkUserImportEntries entries) throws Exception {
Iterator itr = entries.getData().iterator();
while(itr.hasNext()) {
Object obj = (Object)itr.next();
}
return "redirect:/app/{appId}/user/{id}";
}
请注意,删除了注释 @RequestBody 并添加消费 = MediaType.APPLICATION_FORM_URLENCODED_VALUE
回答:Http Post request with content type application/x-www-form-urlencoded not working in Spring
答案 1 :(得分:0)
尝试
contentType: "application/json",
而不是
headers: {
'Content-Type': 'application/json'
},
在你的jsp文件中。
希望这有帮助。