使用Java脚本获得空值,将我的表单提交到新窗口

问题描述

||
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\");
    }
任何帮助将不胜感激 提前致谢     

解决方法

在我的测试中,您不能在表格名称中使用\'[\'等。尽管它在POST请求中将其发送(转义为URL),但至少PHP不会接受转义或未转义的形式。 更改此行:
hiddenField.setAttribute(\"name\",\"solarPanelIds[\"+i+\"]\");
hiddenField.setAttribute(\"name\",\"solarPanelIds\"+i);
有效(只要您更新服务器端变量)。 如果您不希望弹出框,可以考虑使用通过隐藏的iframe异步提交表单的技术。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...