Struts2中采用Json返回List对象数据为空解决方案
来源:互联网 发布:算法研究员 编辑:程序博客网 时间:2024/06/03 11:44
前言:
今天在写一个Android的项目的时候需要服务器通过返回Json对象传递数据,Json中的数据是一个List对象,List中是一堆自定义Message对象。但是在返回的时候接收到的却是空数据。
{"list":[]}
服务器采用的是Struts2+Hibernate+Mysql。这部分功能实现只与Struts2有关。
正文:
很久没有使用Struts2,出现问题的时候以为是记错了,需要在Action中自己对Json进行封装,或者是Message类需要实现序列化等,调试皆不能解决问题。
public class GetNewsAction {
public int id;//请求中传递来的参数
public List list;//需要通过Json返回的数据
public String execute(){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
list = new ArrayList();
list.add(new Message(1,"Test","123",format.format(new Date()),false,"hah",1));
list.add(new Message(1,"Test","123",format.format(new Date()),false,"hah",1));
list.add(new Message(1,"Test","123",format.format(new Date()),false,"hah",1));
return "success";
}
//省略getter、setter方法
}
返回的List中肯定是有数据的,Message类中所有的属性也都提供了相应的getter/setter方法。但是却不能接受到结果。
<action name="test" class="com.bgq.action.GetNewsAction">
<result type="json">
<param name="includeProperties">list</param>
</result>
</action>
一开始在struts2的配置文件中是这么写的,指定返回Json对象包括list。结果返回为空数据,查各种资料各种百度,最后发现应该写成类似于:
<action name="test" class="com.bgq.action.GetNewsAction">
<result type="json">
<param name="includeProperties">
list\[\d+\]\.id,list\[\d+\]\.name,xxx <!--正则表达式--!>
</param>
</result>
</action>
在指定返回数据为list的同时指定返回list中的哪些数据。不然取不到返回结果。
因为整个只有2个属性,向上面这样设置太过繁琐,最后如下设置达到相同的效果:
<action name="test" class="com.bgq.action.GetNewsAction">
<result type="json">
<param name="excludeProperties">id</param>
</result>
</action>
最后输出数据如下:
{"list":[{"id":1,"message":"123","name":"hah","read":false,"time":"2012-01-06 23:41:29","title":"Test","uid":1},
{"id":1,"message":"123","name":"hah","read":false,"time":"2012-01-06 23:41:29","title":"Test","uid":1},
{"id":1,"message":"123","name":"hah","read":false,"time":"2012-01-06 23:41:29","title":"Test","uid":1}]}
然后再Android中通过HttpClient和HttpGet得到HttpResponse对象,通过response.getEntity().getContent()方法取得到了Json数据,最后手动封装还原成List对象,完成数据传递功能。
注意:在Struts2中使用Json需要有相应的Jar包(struts2-json-plugin-x.x.x.jar)支持,以及在配置Action的时候Package从json-default继承。
补充:
<result type="json">
<!-- 这里指定将被Struts2序列化的属性,该属性在action中必须有对应的getter方法 -->
<!-- 默认将会序列所有有返回值的getter方法的值,而无论该方法是否有对应属性 -->
<param name="root">list</param>
<!-- 指定是否序列化空的属性 -->
<param name="excludeNullProperties">true</param>
<!-- 这里指定将序列化list中的那些属性 -->
<param name="includeProperties">list.* </param>
<!-- 这里指定将要从list中排除那些属性,这些排除的属性将不被序列化,一半不与上边的参数配置同时出现 -->
<param name="excludeProperties">id</param>
</result>
- [struts2] Struts2中采用Json返回List对象数据为空解决方案
- Struts2中采用Json返回List对象数据为空解决方案
- Struts2中采用Json返回List对象数据为空解决方案
- 关于使用struts2-json-plugin 插件,Json返回List对象数据为空解决方案
- Struts2 返回 json 的数组数据为 "空" 的解决方案
- struts2 json includeProperties返回list为空
- struts2使用struts2-json-plugin, 返回json值为空..
- java将list对象转换为json字符串数据显示为空的信息
- struts2返回List json
- struts2中Action中返回Json数据
- struts2中使用json时传对象值为空的情况
- 整合struts2,jquery,json。采用jquery ajax,从struts2 action返回json类型数据
- 整合struts2,jquery,json。采用jquery ajax,从struts2 action返回json类型数据
- 整合struts2,jquery,json。采用jquery ajax,从struts2 action返回json类型数据
- 整合struts2,jquery,json。采用jquery ajax,从struts2 action返回json类型数据
- jdbc 查询对象不能返回为空解决方案
- List对象转化为JSON数据
- 解决cxf中list中对象为1个时返回json串问题的配置文件
- .net中对象名无效问题解决
- MyEclipse中配置Tomcat
- 祝兵兵 qq 775170427
- MooseFS分布式存储集群监控警报程序
- n个元素中取m个元素的组合、排列问题
- Struts2中采用Json返回List对象数据为空解决方案
- DELPHI实现关闭指定进程,自身防杀
- JavaScript第四课-CSS
- Ural 1671 Anansi's Cobweb
- 基于运动特征的视频质量评价方法(基于H.264)
- ScrollView无限滚动
- 老鼠走迷宫----------递归问题
- cookie.setPath()的用法
- read_image读取图片变量名