struts2输出JSON
来源:互联网 发布:python的函数参数传递 编辑:程序博客网 时间:2024/04/27 17:43
S2SH中使用json,控制台报错:
2013-01-10 18:11:16,212 ERROR [org.hibernate.LazyInitializationException] - failed to lazily initialize a collection of role: com.xuedou.skypas.bean.Proclass.projects, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.xuedou.skypas.bean.Proclass.projects, no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:380)
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:372)
at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:365)
at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:108)
at org.hibernate.collection.PersistentSet.equals(PersistentSet.java:429)
at java.util.Vector.indexOf(Vector.java:361)
at java.util.Vector.contains(Vector.java:320)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:114)
at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:329)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:228)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:165)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:131)
at org.apache.struts2.json.JSONWriter.array(JSONWriter.java:418)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:155)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:131)
at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:329)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:228)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:165)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:131)
at org.apache.struts2.json.JSONWriter.write(JSONWriter.java:99)
at org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:112)
at org.apache.struts2.json.JSONResult.execute(JSONResult.java:198)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:362)
说:no session or session was closed
解决办法:在实体Bean 一对多的对象get,set 这里。 在get前加@JSON(serialize=false)。(或者在excludeProperties里排除掉相关联的对象)
如:
private Set<Project> projects;//映射的对象@JSON(serialize=false) //加上这个public Set<Project> getProjects() {return projects;}
struts2中运用json主要几步:
1.struts.xml中 package需要继承json-default
2.result 中 ,需要指定json类型,<result name="success" type="json"></result>
扩充:
struts2的json响应param类型的几种:
root:只包含xx对象excludeProperties :除了xx之外的集合includeProperties : 包含xx的集合wrapPrefix :json结果开头添加xx(比如<paramname="wrapPrefix">[</param>)wrapSuffix :同上,只不过是结尾ignoreHierarchy :转化时是否忽略继承关系true/falseenumAsBean : 是否将枚举当做一个bean处理enableGZIP :是否支持gzip压缩输出noCache :是否缓存excludeNullProperties : 是否转化输出 null值statusCode :设置响应代号比如 304callbackParameter : JSONP跨域访问的回调设置contentType : 输出类型
JSON输出时,会把Action中的所有变量( get(),set() ) 的值也同时输出,最好是指定某个集合 如:<param name="root">proclassList<param>
例如:<param name="includeProperties">proclassList\[\d+\]\.id,proclassList\[\d+\]\.proclassname</param> 取得proclassList集合中的proclassname
案例需求一:想得到teacherVO这个类中的list和count两个属性值
<result name="teachersByGSC" type="json"> <param name="root">teacherVO</param> <param name="includeProperties">list.*,count</param> <param name="excludeProperties"> SUCCESS, list\[\d+\]\.FamousStatus, list\[\d+\]\.Flag, list\[\d+\]\.SortOrder, list\[\d+\]\.TeamStatus </param> </result>其中excludeProperties中SUCCESS表示只要排除所有的属性(当然出了list,count),然后在单单排除list里不想要的值
参考文档:
http://struts.apache.org/2.2.3/docs/json-plugin.html (官方文档)
http://qiaolevip.iteye.com/blog/1335069
- Struts2 action 输出 JSON
- struts2输出JSON
- struts2 json 输出日期格式不正确
- struts2 json 输出日期格式不正确
- Struts2两种方式输出json格式
- struts2整合json时不能输出对象的解决方案
- 在Action中以Struts2的方式输出JSON数据
- 在Action中以Struts2的方式输出JSON数据
- 在Action中以Struts2的方式输出JSON数据
- 在Action中以Struts2的方式输出JSON数据
- 在Action中以Struts2的方式输出JSON数据
- struts2 json
- struts2+json
- Json+struts2
- Json+struts2
- struts2 json
- struts2 + JSON
- struts2 json
- IOS:如何使用多张图片合成GIF
- 嵌入式 BOA 服务器移植(本人亲测)和遇到的部分问题总结
- LeiGe脚本学习: 定期完成同步功能或其他功能的开发思路 思考 ~~Myself!
- E版Openstack通过dashboard创建卷失败一例(01)
- UT-Exynos4412 三星ARM四核旗舰开发平台android4.0体验-3跑分测试
- struts2输出JSON
- 在集群上运行topology
- 谷歌的svn有时候连接上有时连不上 解决办法
- 在C++中执行cmd指令的两种方法
- Ubuntu下Sublime Text 2的安装
- java中的数据流
- Delphi的学习笔记九——汉字与区位码
- Delphi 的学习笔记十——数组
- 项目管理心得