easyui+struts2 实现tree的问题及解决办法
2016-01-09 08:30
429 查看
一、基于struts2-json插件方式:
最近在开发一个项目,前台用easyui的tree来显示组织机机构,开始用struts2-json结构,前台代码如下:
$('#organizeTree').tree({ lines: true, url: '/framework/organizeAdminHandler.html?action=treedata', animate: true, onLoadSuccess: function (node, data) { $('body').data('depData', data); }, onClick: function (node) { var selectedId = node.id; $('#userlist').datagrid('load', { organizeId: selectedId }); } });
后台的struts.xml配置如下: <action name="organizeAdminHandler" class="PiorganizeAction" method="organizeAdminHandler"> <result type="json"> <param name="root">result</param> </result> </action>
action的代码如下:
public String organizeAdminHandler(){ if("treedata".equals(action)){ treedata(); } return SUCCESS; } private void treedata(){ List<Piorganize> piorganizeList = piorganizeDao.getPiorgnizeByUser(getPiuser()); String treeJson =genTreeData(piorganizeList, 0); treeJson = "[" +treeJson +"]"; setResult(treeJson); }
根据调试,在前台获取的data是一个字符串类型的数据,如下所示,
结果前台tree显示都是undefined.
显示把action返回的数据作为tree的url这种方式有问题,把前台改成如下代码:
$.getJSON("getSiteTreeAction.action", function(json) { var strjson = eval(json); $('#organizeTree').tree({ lines: true, data:strjson animate: true, onLoadSuccess: function (node, data) { $('body').data('depData', data); }, onClick: function (node) { var selectedId = node.id; $('#userlist').datagrid('load', {organizeId: selectedId}); } }); };
一切正常
但这种先把数据获取之后,生成前台json对象再对tree赋值的方式有点多此一举。但也想不到好的方法,只能采用下面的方式。
2.采用response直接write的方式。
前台代码如下:
$('#organizeTree').tree({ lines: true, url: '/framework/organizeAdminHandler.html?action=treedata', animate: true, onLoadSuccess: function (node, data) { $('body').data('depData', data); }, onClick: function (node) { var selectedId = node.id; $('#userlist').datagrid('load', { organizeId: selectedId }); } });
struts.xml的配置如下:
<action name="organizeAdminHandler" class="PiorganizeAction" method="organizeAdminHandler"> </action>
没有任何result.
action代码如下:
public void organizeAdminHandler(){ if("treedata".equals(action)){ treedata(); } } private void treedata(){ List<Piorganize> piorganizeList = piorganizeDao.getPiorgnizeByUser(getPiuser()); String treeJson =genTreeData(piorganizeList, 0); treeJson = "[" +treeJson +"]"; writeReponse(treeJson); } public void writeReponse(String content) { try { HttpServletResponse resp = ServletActionContext.getResponse(); resp.setContentType("application/json;charset=UTF-8"); PrintWriter out = resp.getWriter(); out.write(content); out.flush(); out.close(); } catch (IOException exc) { exc.printStackTrace(); } }
通过调试,前台data是一个object,一切正常
阅读更多
相关文章推荐
- 陈灯WGF双缓冲绘图框架之gdi及gdiplus实现双缓冲时存在的效率问题及解决办法
- 固定div实现,以及问题 >> document.body.scrollTop的值总为零的解决办法
- android中画文字的换行 办法(对于遇到canvas.drawText(String s )无法实现换行问题的解决
- MyEclipse下实现邮箱收发功能可能遇到的问题及解决办法
- 用C#绘图实现动画出现卡屏(运行慢)问题的解决办法
- android中画文字的换行 办法(对于遇到canvas.drawText(String s )无法实现换行问题的解决)
- 我遇到的Myeclipse 实现Jena推理时出现的问题及解决办法
- 利用jquery实现Ajax技术,post方式传值中文乱码问题的解决办法。
- 使用Python实现Hadoop MapReduce程序遇到的问题解决办法
- VisualTreeHelper遍历listbox遇到的问题,测试解决办法
- jquery1.8版本使用ajax实现微信调用出现的问题分析及解决办法
- 关于“解决实现注册用户后,自动具备访问网站的权限的问题”文章中配置出现找不到角色的问题的解决办法
- Android中实现ListView滑动删除时滑动和触摸冲突问题解决办法
- android中画文字的换行 办法(对于遇到canvas.drawText(String s )无法实现换行问题的解决)
- 实现三列固定宽度居中时遇到的问题及解决办法
- Linux下安装MyEclipse和Tomcat服务器详解,以及我安装过程中所出现的问题以及解决办法,并实现一个web小程序
- android中画文字的换行 办法(对于遇到canvas.drawText(String s )无法实现换行问题的解决)
- VS2010结合水晶报表实现条码打印发布IIS 客户端不能预览打印问题解决办法
- VMware虚拟机ubuntu和主操作系统硬盘之间的文件共享的实现和What is the location of the directory of C header files that match your running问题的解决办法
- EasyUI学习笔记(1)----Tree控件实现过程中.NET下无法访问json数据的解决办法