如何解决使用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异步提交表单的技术。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。