struts2发送ajax的几个问题(不使用struts2-json-plugin的情况下)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts2发送ajax的几个问题(不使用struts2-json-plugin的情况下)相关的知识,希望对你有一定的参考价值。

采用原始方式发送ajax到action时,会遇到get,post的不同,原因是ContentType的问题,ContentType必须是text/html,struts获取到的inputStream才会有值!而默认jquery发送ajax采用的ContentType是application/x-www-form-urlencoded; charset=UTF-8,如果手动设置为json格式进行发送,那么struts2就获取不到数据了,所以在采用Post提交时不用指定ContentType,采用默认的就行,这点和Springmvc不一样,Springmvc发送json时得指定 contentType 为 ‘application/json;charset=utf-8‘,而且json得是完全格式的字符串,但是struts2不光contentType只支持text/html,而且发送数据也不需要转成json字符串,直接发送json对象即可,有点坑啊

技术分享

 

 技术分享

 

采用原始方式输出json时,可以使用fastjson,这个效率比较高,不过下列几点得注意:

1、不需要进行json转换的字段,在set方法上加上@JSONField(serialize=false)
2、相互引用的对象,必须有一个对象的属性set方法上加上@JSONField(serialize=false),以防循环引用
3、fastjson转换数据不能使用hibernate的load方法获取到的数据,报堆栈溢出错误
4、list中相同对象进行json转换时,默认下一对象会显示成一个引用前一个的ref,需要设置一下fastjson对相同对象同样进行json转换
String jsonStr = JSON.toJSONString(list, SerializerFeature.DisableCircularReferenceDetect);//关闭引用检测后





以上是关于struts2发送ajax的几个问题(不使用struts2-json-plugin的情况下)的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 POST (Ajax) 发送 JSON 数据并从 Struts 2 操作接收 JSON 响应

Struts2学习利用ajax异步上传

Struts2

Struts2结合Ajax实现登录

Struts2+Jquery实现ajax并返回json类型数据

使用 Java、Struts 2 和 AJAX 下载文件