获取空值使用java脚本将我的表单提交到新窗口

时间:2011-04-13 13:47:16

标签: javascript

function openWindowWithGraph(selectedItems){
            var i=0;
            var form = document.createElement("form");
            form.setAttribute("method", "post");
            form.setAttribute("action", "http://localhost:8080/cmonitor/app/solarPlant/showChart");
            form.setAttribute("target", "formresult");

            alert(selectedItems[0].solarPanel.id);
            for(i=0;i<selectedItems.length;i++){
                var hiddenField = document.createElement("input");              
                hiddenField.setAttribute("name", "solarPanelIds["+i+"]");
                hiddenField.setAttribute("value", selectedItems[i].solarPanel.id);
                form.appendChild(hiddenField);
            }

            document.body.appendChild(form);
            window.open('','formresult','width=1000,height=1000,toolbar=no ');
            alert("hello");
            form.submit();
        }

这是我的弹簧控制器

@RequestMapping(value="/showChart",method=RequestMethod.POST)
    public ModelAndView showChart(@RequestParam(required=false) Long[] selectedItemIds){
        System.out.println(selectedItemIds);  //getting null in controller
        return new ModelAndView("noHeader/solarPlant/chart");
    }

任何形式的帮助将不胜感激 在此先感谢

1 个答案:

答案 0 :(得分:0)

在我的测试中,您不能在表单名称中使用'['或类似名称。虽然它在POST请求中发送它(URL-escaped),但至少PHP不接受转义或未转义的表单。

更改此行:

hiddenField.setAttribute("name", "solarPanelIds["+i+"]");

hiddenField.setAttribute("name", "solarPanelIds"+i);

有效(只要您更新服务器端变量)。

您可能还希望考虑使用通过隐藏的iframe异步提交表单的技术,如果您不想使用弹出窗口。