Getting null value submitting my form to a new window using java script
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();
        }
here is my spring controller
@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");
    }
any kind of help will be greatly appreciated Thanks in Advance
In my testing, you cannot use '[' or such in a form name. Although it sends it (URL-escaped) in the POST request, at least PHP wouldn't accept the escaped or unescaped form.
Changing this line:
hiddenField.setAttribute("name", "solarPanelIds["+i+"]");
to
hiddenField.setAttribute("name", "solarPanelIds"+i);
works (as long as you update the server side variable).
You might also wish to consider using the technique of submitting a form asynchronously via a hidden iframe, if you are not tied to having a popup.
 
         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论