前台Ajax传输JS数组到Struts2
前台通过jQuery传输JS对象数组,Struts2 Action中如何解析?
我的代码:
$("#myButton").live("click",function() { // k为JS对象数组 var k=MYLIST.getSelected(); var l=new Array(); for(var d=0;d<k.length;d++) { var f={ isDir:k[d].getType()=="file"?0:1, hId:k[d].getType()=="file"?k[d].getHId():0, path:k[d].path() }; l.push(f); } var g=new class_filelist_file_operations(); g.setPathNodes(l); var d = { act : "td", dlpathlist : g.getPathNodes() }; // 以下部分是自己封装的jQuery Ajax var c = new my.FService(); c.url = "file_tDownload"; c.myAJAX({ data : d, // 传输到Action的数据 success : function(h) { }, error : function(h) { } }) });
通过调试抓包查看传输到后台的数据格式为:
act:tardown
dlpathlist[0][isDir]:1
dlpathlist[0][hId]:0
dlpathlist[0][path]:/testtest/测试新建文件夹
dlpathlist[1][isDir]:0
dlpathlist[1][hId]:20
dlpathlist[1][path]:/testtest/Java程序员要去的网站.txt
请问我在Struts2 Action中如何获得 dlpathlist 传输的JS对象数组中的值?谢谢大家~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
最好的方法是先在Ajax参数中将数组转成json字符串,用json.js中的JSON.encode(d)方法,然后在Action中接收到这个字符串参数用gson的fromJson放法将其解析成ArrayList即可。
我也碰到了同样的问题,PO主是如何解决的?
后台定义个数组直接接收就行。跟传递其他值一样
安装兄弟所说如此添加,Debug时,断点并未进入dlpathlist的setter方法:public void setDlpathlist(List<Map> dlpathlist) { this.dlpathlist = dlpathlist; } dlpathlist 仍然没有值
我也碰到了同样的问题,PO主是如何解决的?
此问题已经解决,但一直未上来更新。
前端 如下修改dlpathlist 的值:将g.getPathNodes()解析出JSON字符串。问题解决。
var d = {
act : "td",
dlpathlist : JSON.stringify(g.getPathNodes())
};