Struts2中采用Json返回List对象数据为空解决方案
来源:互联网 发布:游戏平板推荐 知乎 编辑:程序博客网 时间:2024/06/01 07:17
原文地址:http://www.cnblogs.com/warden/archive/2012/01/07/2315427.html
前言:
今天在写一个Android的项目的时候需要服务器通过返回Json对象传递数据,Json中的数据是一个List对象,List中是一堆自定义Message对象。但是在返回的时候接收到的却是空数据。
{
"list"
:[]}
服务器采用的是Struts2+Hibernate+Mysql。这部分功能实现只与Struts2有关。
正文:
很久没有使用Struts2,出现问题的时候以为是记错了,需要在Action中自己对Json进行封装,或者是Message类需要实现序列化等,调试皆不能解决问题。
1 public class GetNewsAction { 2 3 public int id;//请求中传递来的参数 4 public List<Message> list;//需要通过Json返回的数据 5 6 public String execute(){ 7 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 8 list = new ArrayList<Message>(); 9 list.add(new Message(1,"Test","123",format.format(new Date()),false,"hah",1));10 list.add(new Message(1,"Test","123",format.format(new Date()),false,"hah",1));11 list.add(new Message(1,"Test","123",format.format(new Date()),false,"hah",1));12 return "success";13 }14 //省略getter、setter方法15 }
返回的List中肯定是有数据的,Message类中所有的属性也都提供了相应的getter/setter方法。但是却不能接受到结果。
1 <action name="test" class="com.bgq.action.GetNewsAction">2 <result type="json">3 <param name="includeProperties">list</param>4 </result>5 </action>
一开始在struts2的配置文件中是这么写的,指定返回Json对象包括list。结果返回为空数据,查各种资料各种百度,最后发现应该写成类似于:
1 <action name="test" class="com.bgq.action.GetNewsAction">2 <result type="json">3 <param name="includeProperties">4 list\[\d+\]\.id,list\[\d+\]\.name,xxx <!--正则表达式--!>5 </param>6 </result>7 </action>
在指定返回数据为list的同时指定返回list中的哪些数据。不然取不到返回结果。
因为整个只有2个属性,向上面这样设置太过繁琐,最后如下设置达到相同的效果:
1 <action name="test" class="com.bgq.action.GetNewsAction">2 <result type="json">3 <param name="excludeProperties">id</param>4 </result>5 </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继承。
- [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串问题的配置文件
- VB.net学习笔记(六)VB.net的对象
- Android permission 访问权限大全
- android虚拟机安装卸载APP
- 轻量级前端MVVM框架avalon源码分析
- Java Collection
- Struts2中采用Json返回List对象数据为空解决方案
- PMP项目管理知识体系——第一章 引论
- hdu1069 Monkey and Banana
- 杭电1257-最少拦截系统
- CentOS 解决:Determining IP Information for eth0问题
- 如何找回格式化后的数据
- 通过SQLServer的xp_cmdshell在服务器之间传送文件
- 计算机网络基本概念趣解(续)
- HDU 1756 Cupid's Arrow(判断点是否在多边形内部)