问题描述
1.我在js脚本中定义的一个数组对象my_array,并通过ajax传递给后台的Java页面;在js页面定义的数值如下:varmy_array=newArray();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(newString[]);结果系统提示:ArrayStoreException-如果指定数组的运行时类型不是此collection每个元素运行时类型的超类型我想知道是不是我无法在Java中的通过js定义的数组,或者是这种方法是不是行不通?
解决方案
解决方案二:
我也不知道,不懂帮顶
解决方案三:
我也不懂,关注
解决方案四:
我不懂!帮你顶
解决方案五:
将数组序列化,后台获取后,再反序列化
解决方案六:
如果数据量小,那就拼装成字符串吧然后在后台截取
解决方案七:
用JSON来传递的话,请参考下边的方法.在客户端将需要传送到服务器端的二维数组或列表数据转化为JSON对象,再通过Ajax传送到服务器端1.首先将数据组成符合JSON键值对格式的数据{"名称":"值","名称":"值","名称":"值","名称":[{"名称":"值","名称":"值","名称":"值"}]//(代表二维数组)}例如:varbmhlist={"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对象,并赋给变量varbmhAsJSON=Object.toJSON(bmhlist);3.通过Ajax将JSON对象传送给服务器端varmailAjax=newAjax.Request('yjtx.do?method=getJson',//url及需要调用的服务器端的方法{method:'get',parameters:"bmhlist="+bmhAsJSON,//将JSON对象作为参数(参数名为bmhlist)传给服务器端的getJson方法onSuccess:function(transport){//传送成功后执行的函数//alert(transport.responseText);}});在服务器端获得客户端传送的JSON对象publicvoidgetJson(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){Stringjson=request.getParameter("bmhlist");//得到reguest中的JSON对象的字符流JSONObjectjsonObject=null;//定义一个JSONObject对象try{Objectobj=JSONValue.parse(json);//将得到的JSON对象字符流转化为对象jsonObject=(JSONObject)obj;//将对象强制转化为JSON对象JSONArrayarray=(JSONArray)jsonObject.get("bmha");//得到JSON对象中键值为"bmha"的数组转化为JSONArray数组for(inti=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(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}
解决方案八:
放在表单里的复选框,可以通过这样的方式传值到后台页面<formaction="StringsServlet"><inputname="checkbox"type="checkbox"value="1"/><inputname="checkbox"type="checkbox"value="2"/><inputname="checkbox"type="checkbox"value="3"/><inputname="checkbox"type="checkbox"value="4"/><inputname="checkbox"type="checkbox"value="5"/><inputname="checkbox"type="checkbox"value="6"/><inputtype="submit"value="tijiao"/></form>
StringsServletprotectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{String[]a=request.getParameterValues("checkbox");System.out.println(a.length);for(inti=0;i<a.length;i++){System.out.println(a[i]);}}
这样子就能把表单中选中的复选框的value值拿到