将json对象中发布的一项映射到SpringMVC中的列表对象
我在SpringMVC控制器中发布json对象并将其映射到List对象时遇到了麻烦。我的表格有几个复选框。当用户检查并提交时,表单中的数据被反序列化,发送到SpringMVC控制器,并映射到列表类型对象。当用户选中两个或多个复选框时,它工作正常。但对于一个盒子来说,它不是 当用户检查两个或更多时,数据被反序列化,如下所示将json对象中发布的一项映射到SpringMVC中的列表对象,json,spring,model-view-controller,list,Json,Spring,Model View Controller,List,我在SpringMVC控制器中发布json对象并将其映射到List对象时遇到了麻烦。我的表格有几个复选框。当用户检查并提交时,表单中的数据被反序列化,发送到SpringMVC控制器,并映射到列表类型对象。当用户选中两个或多个复选框时,它工作正常。但对于一个盒子来说,它不是 当用户检查两个或更多时,数据被反序列化,如下所示 {"users":["137","138"]} 然而,当用户只选中一个复选框时,它就像 {"users":"138"} 并返回400个错误请求错误 有什么解决办法吗 jQu
{"users":["137","138"]}
然而,当用户只选中一个复选框时,它就像
{"users":"138"}
并返回400个错误请求错误
有什么解决办法吗
jQuery代码是:
$(document).ready(function() {
$('#groupusers').submit(function() {
var users = $(this).serializeObject();
$.postJSON("${context}/admin/groups/${group.seq}/users", users, function(result) {
...
});
return false;
});
表格为:
<form id="groupusers" method="post" accept-charset="UTF-8" action="/" class="edit_group">
...
<div id="users">
<c:forEach var="user" items="${users}">
<label><input id="users" name="users" type="checkbox" value="${user.seq}" /> ${user.firstName} ${user.lastName}</label><br>
</c:forEach>
</div>
</form>
映射到表单数据的列表对象:
public class AssignedUsers {
private List<Long> users;
...
}
提前感谢。序列化对象函数的实现是什么?您可能需要修改它以始终返回数组,因此即使只选中一个框,对象也应该是:{users:[138]} 服务器返回400可能是因为Jackson at在后端抛出了一个解析异常 这是我找到的解决方案,而且我一直在使用它,它完全满足了您的要求 实例 HTML 输出
{
data: ["some data", "more data"]
users: [137]
}
序列化对象似乎来自json库。json.js我将研究该函数。谢谢你的回答。我只是想知道你是否能解决这个问题。我现在也有同样的问题。
$('#myForm').serializeObject();
{
data: ["some data", "more data"]
users: [137]
}