1.我在js脚本中定义的一个数组对象my_array,并通过ajax传递给后台的Java页面;在js页面定义的数值如下:
        var my_array = new Array();
        if (result){ 
            $('input[type=checkbox]:checked').each(function(){
                my_array.push($.trim($(this).attr('value')));
            });2.我在Java页面通过request.getParameterMap()的到这个对象,(注:当前request中只有该对象my_array);3.        map = request.getParameterMap();
          Collection<String> rightIdList = map.values();
          String[] newLists = rightIdList.toArray(new String[]);
结果系统提示:
ArrayStoreException - 如果指定数组的运行时类型不是此 collection 每个元素运行时类型的超类型 
我想知道是不是我无法在Java中的通过js定义的数组,或者是这种方法是不是行不通?  

解决方案 »

  1.   

    用JSON来传递的话,请参考下边的方法.在客户端将需要传送到服务器端的二维数组或列表数据转化为JSON对象,再通过Ajax传送到服务器端 1.首先将数据组成符合JSON键值对格式的数据 {"名称":"值","名称":"值","名称":"值", "名称":[{"名称":"值","名称":"值","名称":"值"}]//(代表二维数组) } 例如: var bmhlist = { "maxnum":30, "errorcode":1, "bmha": [ {"bmh":"0151810151810000085","dfdxx":"1|2|","pycj":3}, {"bmh":"0151810151810000086","dfdxx":"3|4|","pycj":7}, {"bmh":"0151810151810000087","dfdxx":"3|4|","pycj":7},     ] } 2.将JSON格式的数据转化为JSON对象,并赋给变量 var bmhAsJSON=Object.toJSON(bmhlist); 3.通过Ajax将JSON对象传送给服务器端var mailAjax = new Ajax.Request('yjtx.do?method=getJson', //url及需要调用的服务器端的方法            {                  method: 'get',                  parameters: "bmhlist=" + bmhAsJSON,//将JSON对象作为参数(参数名为bmhlist)传给服务器端的getJson方法              onSuccess: function(transport) {//传送成功后执行的函数                 //alert(transport.responseText);              }              });                在服务器端获得客户端传送的JSON对象public void getJson(ActionMapping mapping, ActionForm form,    HttpServletRequest request, HttpServletResponse response) {   String json=request.getParameter("bmhlist");//得到reguest中的JSON对象的字符流    JSONObject jsonObject = null;//定义一个JSONObject对象              try {               Object obj=JSONValue.parse(json);//将得到的JSON对象字符流转化为对象               jsonObject=(JSONObject)obj;//将对象强制转化为JSON对象               JSONArray array = (JSONArray) jsonObject.get("bmha");//得到JSON对象中键值为"bmha"的数组转化为JSONArray数组               for(int i=0;i<array.size();i++){               jsonObject=(JSONObject)array.get(i);//得到JSONArray数组中的每个元素并将其强制转化为JSONObject对象               logger.info("jsonObject.getbmh:"+jsonObject.get("bmh"));//通过JSONObject的get(键值)方法获得每个键值对的值,然后根据需要进行后续处理               logger.info("jsonObject.getdfdxx:"+jsonObject.get("dfdxx"));               logger.info("jsonObject.getpycj:"+jsonObject.get("pycj"));              }   } catch (Exception e) {    // TODO Auto-generated catch block    e.printStackTrace();   }
    }
      

  2.   

    放在表单里的复选框,可以通过这样的方式传值到后台
    页面<form action="StringsServlet">
    <input name="checkbox" type="checkbox" value="1" />
    <input name="checkbox" type="checkbox" value="2" />
    <input name="checkbox" type="checkbox" value="3" />
    <input name="checkbox" type="checkbox" value="4" />
    <input name="checkbox" type="checkbox" value="5" />
    <input name="checkbox" type="checkbox" value="6" />
    <input type="submit" value="tijiao"/>
    </form>
    StringsServletprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String [] a = request.getParameterValues("checkbox");
    System.out.println(a.length);
    for(int i=0;i<a.length;i++){
    System.out.println(a[i]);
    }
    } 这样子就能把表单中选中的复选框的value值拿到