将数组提交给Spring控制器

时间:2011-07-26 11:01:35

标签: ajax json spring jquery

我正在尝试将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();
                });

1 个答案:

答案 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();
                });