本帖最后由 lpy3654321 于 2013-01-07 18:31:39 编辑

解决方案 »

  1.   


    你这里  alert(ids);//  ids已经确定有值.为数组
    弹出的ids是什么格式的 。 贴出来看看应该为{"ids":"1","ids":"2"} 这样的格式把
      

  2.   

    不是的,是用逗句分隔的..用浏览器DEBUG看是一个数组
      

  3.   


    也有可能是 ids=1&ids=2 这样的格式 , 都试试吧。
      

  4.   

    你要想办法让 ids 为 ids=1&ids=2 或 {"ids":"1","ids":"2"} 这样子的格式。应该就是这两种格式 。都试试。
      

  5.   

    我的这个数组是JQGRID的方法var ids = grid.jqGrid('getGridParam','selarrrow');返回的,所以格式肯定是死的.
      

  6.   

    你用jqgrid获得的到的这个ids是一个array,json的表现形式是[1,2,3,4]这样的。alert(ids)弹出的显示是
    [object object]这样的
    http协议传输的时候可不认这个。struts2要接收这个数组的话你只有ids=1&ids=2或者{ids:1,ids:2}这样的形式要么你就要用字符串String来接收。你要传的话{ids:ids.toString()}这种的就可以只用String来接收通过,就可以分割了。要不就是自己写个oneAction_delete-conversion.properties的类型转换器,去转换
      

  7.   


    这位大哥,如果我用的转换器,那么怎么样才能把转换过的参数传到成员变量里,就像是正常传一个ID一样...action:
    private String id;
    public void setId(String id){
         ....
    }
      

  8.   

    再一个问题,struts2 没有自带的转换器可以处理这样的问题吗?
    我的传是这样的...
      

  9.   

    其实你没必要把问题搞得这么复杂话
    你用var ids=grid.getGridParam("selarrrow");
    ajax的时候直接在data里面ids=ids.toString();
    action里面直接定义String ids的setter gettter
    就可以获得1,2,3,4,5这样的字符串了。到时你要转换成数组直接ids.split(",")就可以了
      

  10.   

    17楼说的很正确啊,你在js里面获取值的时候,就用一个特点符号如“,”把值分开,js里面取到一个字符串,在action里面获取该字符串,再split一下就可以啦
      

  11.   

    加一下jQuery.ajaxSettings.traditional = true;就可以了
    否则传过去的参数后带“[]”
      

  12.   

    刚刚解决了你这个问题,struts2没有自动转换接收的,js不用变,你需要在java代码里这样接收:String[] ids = request.getparameterValues("ids[]");这样就可以了。
      

  13.   

    {"ids":"1","ids":"2"}这是字符串,后台接收的是字符串不是数组,你要后台解析的