我正在尝试将checkbox的值数组提交给控制器:
@RequestMapping(value = "/save", method = RequestMethod.POST)
public ModelAndView save(@RequestBody UserForm form, HttpServletResponse response) { ... }
UserForm具有:
public class UserForm extends BaseForm {
private String[] role; ... }
我使用jquery的postJSON方法发布。当有多个选中的复选框时,一切都很好 - 控制器成功将其转换为String数组。但是如果只选择了一个复选框 - serversife会失败,因为请求参数(特别是角色字段)已作为字符串而不是具有单个值的数组传递。 复选框如下所示:
<input type="checkbox" name="role" value="1" />
<input type="checkbox" name="role" value="2" />
etc...
有任何帮助吗?谢谢
其他:
$.postJSON(url + 'save',
$('#userForm').serializeObject(),
function(response) {
if (response.isAuthenticated && response.isAuthorized) {
if (response.hasErrors) {
$('#userForm').setErrors(response.errors);
hideWait();
}
else
$('#filter').click();
}
else
redirectToLogin();
});
答案 0 :(得分:0)
以下是我找到的解决方案:
var data = $('#userForm').serializeObject();
data.ur = new Array();
$('#ur:checked').each(function() {
data.ur.push($(this).val());
});
$.postJSON(url + 'save',
data,
function(response) {
if (response.isAuthenticated && response.isAuthorized) {
if (response.hasErrors) {
$('#userForm').setErrors(response.errors);
hideWait();
}
else
showList(true);
}
else
redirectToLogin();
});