日期:2014-05-17  浏览次数:20867 次

求助 structs2返回的json jquery easyui的datagrid无法加载数据
js代码如下


action代码如下


structs配置如下

经测试 
返回的result的结果为:
返回的resultS的结果为:
{"total":20,"rows":[{"createtime":null,"isused":false,"username":"姓名0","userid":0,"role":null,"usertype":0,"password":""},{"createtime":null,"isused":false,"username":"姓名1","userid":0,"role":null,"usertype":0,"password":""},{"createtime":null,"isused":false,"username":"姓名2","userid":0,"role":null,"usertype":0,"password":""},{"createtime":null,"isused":false,"username":"姓名3","userid":0,"role":null,"usertype":0,"password":""},{"createtime":null,"isused":false,"username":"姓名4","userid":0,"role":null,"usertype":0,"password":""},{"createtime":null,"isused":false,"username":"姓名5","userid":0,"role":null,"usertype":0,"password":""},{"createtime":null,"isused":false,"username":"姓名6","userid":0,"role":null,"usertype":0,"password":""},{"createtime":null,"isused":false,"username":"姓名7","userid":0,"role":null,"usertype":0,"password":""},{"createtime":null,"isused":false,"username":"姓名8","userid":0,"role":null,"usertype":0,"password":""},{"createtime":null,"isused":false,"username":"姓名9","userid":0,"role":null,"usertype":0,"password":""}]}


但无法返回接收的是result还是resultS, jquery easyui的datagrid都加载不上数据,跪求大神指导
------解决方案--------------------
我不明白你的result还是resultS分别是什么?还有就是要返回json数据的话,在你的struts.xml中需要配置这个action所在的包继承的是json-default哦
你可以参照下这个例子去实现
http://blog.csdn.net/jalorchen_java/article/details/8872831

希望可以帮助到你,我在百度知道回答你的问题了,望采纳,有问题可以继续追问!
------解决方案--------------------
1.你的json里bean的key要和你页面上column的field一致才能正常显示,目测你的json是3列,所以你要在页面上的columns里写3个json对象,一个对象就表示一列。
2.还有要注意的是json格式,比如符合easyui的datagrid组件的json格式。你上面发的那一段格式貌似没错,可是没见你怎么封装的,你直接通过json-lib的fromObject()方法转换的格式肯定是不对的,还要拼接一下,因为前面还有:total:xxx  rows:xxx 这些。
3.还有就是数据到前台的问题,为什么现在好多人都喜欢用struts自带的<result type="json">,我建议你不要用这种,struts本身对json和ajax的支持就不好。告诉你一种简单的办法,showAllUser这个Action是你获取数据的入口Action,你只需要在struts.xml中定义这个<action name="showAllUser"></action>,不需要定义它的result标签,就是只给它一个入口,然后在你的action方法中return null。数据发送到前台是通过流实现的,得到你的json字符串之后,写这样的代码:

HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("html/text;charset=UTF-8");
response.getWriter().write(json);

注意json是字符串,不管是转换的还是拼接的,要符合datagrid要求的json格式。
然后你json里的bean的属性、要和你前台定义的columns里的field一致,这样就能保证数据的正常显示了。