采用原始方式发送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的情况下)的更多相关文章

  1. Struts2(三) 配置struts.xml的提示(在不联网的情况下)

    开发过程中如果可以上网,struts.xml 会自动缓存dtd,提供提示功能.如果不能联网需要我们配置本地dtd,这样才能让struts2 产生提示 1.首先,在EClipse中依次点击工具栏中的wi ...

  2. struts2响应AJAX

    1发送ajax请求使用stream进行响应 Result的type属性的stream取值. 1.1定义Action public class UserAction { private String u ...

  3. Struts2结合Ajax实现登录

    前言:Struts2作为一款优秀的MVC框架,和Ajax结合在一起,用户就会有良好的体验,本篇博文我们来模拟一个简单的登录操作,实现Ajax的异步请求,其中Struts2进行的是链接处理,Action ...

  4. [ExtJS5学习笔记]第三十二节 sencha extjs 5与struts2的ajax交互配置

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/43487751 本文作者:sushengmiyan ------------------ ...

  5. Struts2对AJAX的支持

    一.简介        struts2确实一个非常棒的MVC框架.这里部分记述一下struts2对AJAX的支持.实现AJAX有两种方式,一种是使用原生的javascript代码实现,一种是使用第三方 ...

  6. Struts2 处理AJAX请求

    Struts2整合AJAX有2种方式: 使用type="stream"类型的<result> 使用JSON插件 使用type="stream"类型的 ...

  7. 在发送ajax请求时加时间戳或者随机数去除js缓存

    在发送ajax请求的时候,为了保证每次的都与服务器交互,就要传递一个参数每次都不一样,这里就用了时间戳 大家在系统开发中都可能会在js中用到ajax或者dwr,因为IE的缓存,使得我们在填入相同的值的 ...

  8. Struts2与Ajax的整合

    整合: 导入jar包 sturts2-json-plugin-2.1.8.1.jar 说明: 在该jar包中有struts-plugin.xml文件 <struts>            ...

  9. 原生js发送ajax请求

    堕落了一阵子了,今天打开博客,发现连登录的用户名和密码都不记得了.2016年已过半,不能再这么晃荡下去了. 参加了网易微专业-前端攻城狮 培训,目前进行到大作业开发阶段,感觉举步维艰.但是无论如何,不 ...

随机推荐

  1. linux 学习笔记1

    1.IDE硬盘        /dev/hd[a-d]                   IDE1  主  /dev/hda   从 /dev/hdb          IDE2        主 ...

  2. idea Plugin "Maven Integration Extension" was not loaded: required plugin "Maven Integration" is disabled

    由于自己运行了eclipse maven及idea maven 同时操作,可能产生了以上错误.既: idea  Plugin "Maven Integration Extension&quo ...

  3. Python HTMLTestRunner报告及BeautifulReport报告

    import unittest import HTMLTestRunner class Testfunc(unittest.TestCase): def testa(self): "&quo ...

  4. jqgrid 事件说明

    Events(事件) 事件响应动作被设置为表格的属性,以下定义了行被选中时的响应: var lastSel; jQuery("#gridid").jqGrid({ ...    o ...

  5. 【BZOJ4898】[Apio2017]商旅 分数规划+SPFA

    [BZOJ4898][Apio2017]商旅 Description 在广阔的澳大利亚内陆地区长途跋涉后,你孤身一人带着一个背包来到了科巴.你被这个城市发达而美丽的市场所深深吸引,决定定居于此,做一个 ...

  6. oracle clob字段去除html标签

    通过正则表达式的方式去除html标签 select regexp_replace(content,'</?[^>]*>|nbsp;|&','') content from T ...

  7. RabbitMQ安装篇

    一切不是自己实战,且跑不起来的程序都是在耍流氓! 先下载: http://www.erlang.org/downloads     erlang 包

  8. $(document).ready() $(window).load 及js的window.onload

    1.$(document).ready()  简写为$(function(){}) DOM结构绘制完成执行,而无需等到图片或其他媒体下载完毕. 2.$(window).load  在有时候确实我们有需 ...

  9. Testlink安装成功后首页提示“There are security warning for your consideration.”

    Testlink安装成功后,登录Testlink,首页显示警告信息: “There are security warnings for your consideration. See details ...

  10. 我的Android进阶之旅------>Android使用cmd窗口进行adb logcat时出现中文乱码问题的解决办法

    今天用CMD命令进行adb logcat时显示一堆的乱码,乱码如下: C:\Users\Administrator>adb logcat -s logcat --------- beginnin ...