1.导入jsonplugin包
Struts2.16:导入jsonplugin-0.34.jar包(下载包)和commons-logging-1.0.4.jar(Struts2 lib下有)
Struts2.18导入struts2-json-plugin-2.1.8.1.jar(Struts2 lib下有)
2.struts.xml中package 中extends="json-default"
<package name="json" namespace="/json" extends="json-default">
3.result 中type="json"
<!-- 封装所以的get开头的方法 -->
<result type="json" name="user">
</result>
<!-- 只包含user.id属性 -->
<result type="json" name="user">
<param name="includeProperties">
user\.id
</param>
</result>
<!-- 不包含user属性 -->
<result type="json" name="list">
<param name="excludeProperties">
user
</param>
</result>
<!-- 根对象只包含user -->
<result type="json">
<param name="root">
user
</param>
</result>
<!-- "root"对象中父类的field(属性)不会(会?) 默认存放到 JSON数据中,如果不想这样做,需要在配置时指定 ignoreHierarchy 为 false: -->
<result type="json">
<param name="ignoreHierarchy">false</param>
</result>
4.避免使用get开头的action方法
在属性get方法上面加
@JSON(name="newName")json中的名称
@JSON(serialize=false) 属性不被加入json
@JSON(format="yyyy-MM-dd") 格式化日期
5.在action中赋值,返回对应的result字符串
转换成json时发生的错误:
No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) ) (through reference chain: ***************_$$_javassist_15["hibernateLazyInitializer"])
后来google发现在je上有人有类似的问题:http://147175882.iteye.com/blog/380823
147175882 写道
分析原因,是因为jsonplugin用的是java的内审机制.hibernate会给被管理的pojo加入一个hibernateLazyInitializer属性,jsonplugin会把hibernateLazyInitializer也拿出来操作,并读取里面一个不能被反射操作的属性就产生了这个异常.
不过我用的是jackson来转json,所以想到了用annotation来排除hibernateLazyInitializer 这个属性
在你的pojo类声明加上:
Java代码
@JsonIgnoreProperties(value={"hibernateLazyInitializer"})
或者:
这个错其实很易明了,因为你序列化对象A时,需要把里面的多对一关系的B拿出来,而B里面又有A的集合,如此反复,便报这样的错了,解决这个问题的方法在于在 多对一关系中的的一方的set 集体的get 方法前面添加@JsonIgnore即可,如:
Java代码
@JsonIgnore public Set getStuedntses() {
return studentses;
}
添加这个注解后,无论你是lazy="true" or lazy="false"他都不会去序列化你的了!
positioned update not supported异常解决
该异常有两种解决方法:
第一:在struts.xml文件的配置中排除不要被JSON序列化的属性,例如:
Java代码
<action name="functions" class="getFunctionsAction" method="functions_getList">
<result type="json">
<param name="excludeProperties">functionsService</param>
</result>
</action>
其中functionsService就是不要被JSON序列化的属性。
第二:在Action文件中去除不要被JSON序列化的属性的get()方法,例如:
Java代码
public IFunctionsService getFunctionsService() {
return functionsService;
}
这样做functionsService同样不会被JSON序列化。
说明:
带有transient修饰符与没有Getter方法的字段(field)都不会被串行化为JSON。
分享到:
相关推荐
但是,在开发工作中,对功能的升级是基于既定架构是很常见的情况。本人碰到需要用开发基于Struts2的HTTP+JSON返回... Struts2返回JSON有两种方式:1.使用Servlet的输出流写入JSON字符串;2.使用Struts2对JSON的扩展。
struts2返回json数据类型
当自己做出来时,感觉挺简单的,但想起自己刚开始做不会那会儿,真的挺悲哀的啊,在网上也搜了半天也没搜出个123,最终经过苦战终于做出来的,文档中重要部分都标红提示了,在此分享给童鞋们
通过struts2返回json数据类型很好的文档里面有例子说明的
struts2返回json数据用query在页面接收
Struts2返回JSON对象. 通过Struts2框架返回json对象,更好传递数据
Struts2 返回json对象,用一个具体的实例,教会你用struts2 + ajax开发。
maven-web项目 Struts2 Struts注解 Struts2返回json
NULL 博文链接:https://firezhfox.iteye.com/blog/1730549
Struts2返回JSON对象.docxStruts2返回JSON对象.docx
Struts2返回JSON对象。将jsonplugin-0.30.jar放到工程的lib下面,然后struts2在struts.xml的配置文件中可以指定返回的结果集的类型为:json,把返回的结果封装为json字符串JSON插件是Struts2的Ajax插件,通过利用JSON...
详细的解说Struts2返回JSON数据的具体应用范例
Struts2返回JSON对象[参考].pdf
ajaxfileupload.js(struts2返回json后,success接收不到,修改后的版本) strust2+ajaxfileupload,成功后的回调
该资源是使用struts2框架进行操作,返回json格式数据,前台通过ajax提交内容。
struts2所需的包和Struts2 json所需包,直接导进去就能用,很适合新手开发以及测试Struts2返回json格式的数据。
struts2与json插件进行整合实例,有兴趣可以下载下来看看
介绍struts、ajax如何返回json数据 一首先引入Struts和json所需的jar包。 二编写页面 三编写action类 四Struts配置
使用Struts2和jQuery EasyUI实现简单CRUD系统,从零开始,从基础的EasyUI与Struts2的使用json格式进行交互开始。