【问题标题】:jquery load array parameter to spring mvc controllerjquery将数组参数加载到spring mvc控制器
【发布时间】:2013-05-18 11:26:06
【问题描述】:

我正在尝试将长数组从 jquery 加载传递到 spring 控制器。我已经成功传递了字符串变量,但没有传递数组。

javascript:

function ModuleMemberCheckboxPassIds(){
     var memberUserIds = [];
     var memberNames = [];
     $('.membercheckbox:checked').each(function(i){      
         memberUserIds[i] = $(this).val();
     });
     alert(memberUserIds.length);
     $( "#onetextarea" ).load('/assign_task', {"memberUserIds":memberUserIds,  "testdata": "test", });   
}

弹簧控制器:

@RequestMapping(value="/assign_task")
    public String viewAssignTask(Model model, String testdata, HttpServletRequest request){

        if(request.getAttribute("memberUserIds")==null) System.out.println("null"); else System.out.println("not null"); //returns null

        System.out.println("test: " + testdata);//returns a value

        model.addAttribute("transferVO", new TransferVO());
        return "module/view-members-checkbox";
    }

在 viewAssignTask 方法中,我能够读取从 jquery 发送的 tesdata 变量。但是 memberUserIds 返回 null

请帮忙

【问题讨论】:

    标签: java javascript jquery spring-mvc


    【解决方案1】:

    您是否期望服务器上有一个传入的 JSON 对象?如果是这样,您可以尝试使用 $.ajax 而不是 $.load:

    var data={"memberUserIds":memberUserIds,"testdata": "test"};
    
    $.ajax({
        url: '/assign_task',
        type: 'GET',
        data: JSON.stringify(data),
        contentType: 'application/json',
        success: function(html) {
            $("#onetextarea").html(html);
        }
    }); 
    

    【讨论】:

    • GET 不起作用,我不得不将其更改为发布。我不知道为什么,但我不得不写这个数据: JSON.stringify(eval({"memberUserIds":memberUserIds ,"testdata":"test"})),
    【解决方案2】:

    你可以使用:

    request.getParameterValues("memberUserIds");
    

    用于获取多值参数。

    否则:

    您想使用 Spring MVC 的功能的一个建议是:

    RequestMapping(value="/assign_task")
        public String viewAssignTask(Model model, String testdata,@RequestParam String [] memberUserIds, @RequestParam String testData){
    //Your Code
     }
    

    【讨论】:

    • request.getParameterValues("memberUserIds");仍然显示为空。我没有得到它使用 @RequestParam 不起作用。呼叫未定向到此控制器。 @RequestMapping(value="/assign_task") public String viewAssignTask(Model model,@RequestParam String[] memberUserIds,@RequestParam String testdata){ ...} Javascript 调用:$("#onetextarea").load('/hamdan /module/assign_task', {"memberUserIds":memberUserIds, "testdata": "test", });
    • 没有错误信息。代码很好。我认为 request 找不到应该分派请求的控制器和路径
    • 可能是请求的 URL 错误。所以尝试添加绝对路径加载('localhost:8080/myapp_/assign_task'
    猜你喜欢
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多