Struts2 不能接收数组,哪位帮帮我

Zeus 2013-01-07 06:29:12

if(confirm("确定要删除 "+ ids.length+" 条数据吗?")){
alert(ids);// ids已经确定有值.为数组 有下标,有长度.循环可用.
$.ajax({
type : "post",
url:templateRoot + '/one/oneAction_delete.do',
dataType : "json",
data : { "ids" : ids},
// cache : false,
success : function(data, textStatus) {
jQuery("#grid").trigger("reloadGrid");
gridDialog.dialog("close");
}
});
}



public String[] ids;
public void setIds(String[] ids) {
this.ids = ids;
}


//程序能走到这里,把上面的参数换面字符串就可以里来,在下标为0的位置上,但数组的长度永远为1
public void delete(){
// oneService.deleteByIds(ids);
System.out.println("木要");
System.out.println("------"+ids);
outPrint("删除");
}



用System.out.println("------"+ids);输出为null
...全文
474 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
小黑java 2014-03-27
  • 打赏
  • 举报
回复
{"ids":"1","ids":"2"}这是字符串,后台接收的是字符串不是数组,你要后台解析的
summmer- 2013-09-12
  • 打赏
  • 举报
回复
刚刚解决了你这个问题,struts2没有自动转换接收的,js不用变,你需要在java代码里这样接收:String[] ids = request.getparameterValues("ids[]");这样就可以了。
lunasjz 2013-08-27
  • 打赏
  • 举报
回复
加一下jQuery.ajaxSettings.traditional = true;就可以了 否则传过去的参数后带“[]”
suciver 2013-01-08
  • 打赏
  • 举报
回复
其实你没必要把问题搞得这么复杂话 你用var ids=grid.getGridParam("selarrrow"); ajax的时候直接在data里面ids=ids.toString(); action里面直接定义String ids的setter gettter 就可以获得1,2,3,4,5这样的字符串了。到时你要转换成数组直接ids.split(",")就可以了
tanshulin520 2013-01-08
  • 打赏
  • 举报
回复
传一个字符串后台,再分拆
suciver 2013-01-08
  • 打赏
  • 举报
回复
你前台怎么传的啊
Zeus 2013-01-08
  • 打赏
  • 举报
回复
引用 12 楼 suciver 的回复:
你用jqgrid获得的到的这个ids是一个array,json的表现形式是[1,2,3,4]这样的。alert(ids)弹出的显示是
[object object]这样的
http协议传输的时候可不认这个。struts2要接收这个数组的话你只有ids=1&ids=2或者{ids:1,ids:2}这样的形式要么你就要用字符串String来接收。你要传的话{ids……

再一个问题,struts2 没有自带的转换器可以处理这样的问题吗?
我的传是这样的...
Zeus 2013-01-08
  • 打赏
  • 举报
回复
引用 12 楼 suciver 的回复:
你用jqgrid获得的到的这个ids是一个array,json的表现形式是[1,2,3,4]这样的。alert(ids)弹出的显示是 [object object]这样的 http协议传输的时候可不认这个。struts2要接收这个数组的话你只有ids=1&ids=2或者{ids:1,ids:2}这样的形式要么你就要用字符串String来接收。你要传的话{ids……
这位大哥,如果我用的转换器,那么怎么样才能把转换过的参数传到成员变量里,就像是正常传一个ID一样... action: private String id; public void setId(String id){ .... }
suciver 2013-01-08
  • 打赏
  • 举报
回复
你用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的类型转换器,去转换
Zeus 2013-01-08
  • 打赏
  • 举报
回复
引用 10 楼 lpy3654321 的回复:
我公司的就是这样传进来的..为什么我这行呢.
打错字了. ...我这不行啊..
Zeus 2013-01-08
  • 打赏
  • 举报
回复
我公司的就是这样传进来的..为什么我这行呢.
funi16 2013-01-08
  • 打赏
  • 举报
回复
17楼说的很正确啊,你在js里面获取值的时候,就用一个特点符号如“,”把值分开,js里面取到一个字符串,在action里面获取该字符串,再split一下就可以啦
hundsun_2008 2013-01-07
  • 打赏
  • 举报
回复
采用json传递。
_jerrytiger 2013-01-07
  • 打赏
  • 举报
回复
引用 7 楼 lpy3654321 的回复:
引用 6 楼 is_zhoufeng 的回复:引用 5 楼 lpy3654321 的回复: 引用 3 楼 is_zhoufeng 的回复:引用 1 楼 is_zhoufeng 的回复: Plain Text code?1234你这里 alert(ids);// ids已经确定有值.为数组弹出的ids是什么格式的 。 贴出来看看 应该为{"ids":"1","ids……
需要...
Zeus 2013-01-07
  • 打赏
  • 举报
回复
引用 6 楼 is_zhoufeng 的回复:
引用 5 楼 lpy3654321 的回复: 引用 3 楼 is_zhoufeng 的回复:引用 1 楼 is_zhoufeng 的回复: Plain Text code?1234你这里 alert(ids);// ids已经确定有值.为数组弹出的ids是什么格式的 。 贴出来看看 应该为{"ids":"1","ids":"2"} 这样的格式把 也有可能是 ids=1&amp……
不需要吧.是一个复选框,怎么办. .
_jerrytiger 2013-01-07
  • 打赏
  • 举报
回复
引用 5 楼 lpy3654321 的回复:
引用 3 楼 is_zhoufeng 的回复:引用 1 楼 is_zhoufeng 的回复: Plain Text code?1234你这里 alert(ids);// ids已经确定有值.为数组弹出的ids是什么格式的 。 贴出来看看 应该为{"ids":"1","ids":"2"} 这样的格式把 也有可能是 ids=1&ids=2 这样的格……
要把它变成字符串
Zeus 2013-01-07
  • 打赏
  • 举报
回复
引用 3 楼 is_zhoufeng 的回复:
引用 1 楼 is_zhoufeng 的回复: Plain Text code?1234你这里 alert(ids);// ids已经确定有值.为数组弹出的ids是什么格式的 。 贴出来看看 应该为{"ids":"1","ids":"2"} 这样的格式把 也有可能是 ids=1&ids=2 这样的格式 , 都试试吧。
我的这个数组是JQGRID的方法var ids = grid.jqGrid('getGridParam','selarrrow');返回的,所以格式肯定是死的.
_jerrytiger 2013-01-07
  • 打赏
  • 举报
回复
引用 2 楼 lpy3654321 的回复:
引用 1 楼 is_zhoufeng 的回复:Plain Text code 你这里 alert(ids);// ids已经确定有值.为数组 弹出的ids是什么格式的 。 贴出来看看 应该为{"ids":"1","ids":"2"} 这样的格式把 不是的,是用逗句分隔的..用浏览器DEBUG看是一个数组
你要想办法让 ids 为 ids=1&ids=2 或 {"ids":"1","ids":"2"} 这样子的格式。应该就是这两种格式 。都试试。
_jerrytiger 2013-01-07
  • 打赏
  • 举报
回复
引用 1 楼 is_zhoufeng 的回复:
Plain Text code?1234你这里 alert(ids);// ids已经确定有值.为数组弹出的ids是什么格式的 。 贴出来看看 应该为{"ids":"1","ids":"2"} 这样的格式把
也有可能是 ids=1&ids=2 这样的格式 , 都试试吧。
Zeus 2013-01-07
  • 打赏
  • 举报
回复
引用 1 楼 is_zhoufeng 的回复:
Plain Text code 你这里 alert(ids);// ids已经确定有值.为数组 弹出的ids是什么格式的 。 贴出来看看 应该为{"ids":"1","ids":"2"} 这样的格式把
不是的,是用逗句分隔的..用浏览器DEBUG看是一个数组
加载更多回复(1)

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧