采用原始方式发送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. 3、easyUI-创建 CRUD可创建展开行明细编辑dataGrid(表格)

    同样在上一节中讲到可以编辑的表格,现在讲一般用到的最后一个datagrid(表格)相关的展开明细可编辑的表格: 第三中表格主要应用场景在:列出表格信息,然后点击可以查看详细信息(此处是全部可以编辑,可 ...

  2. 【BZOJ1803】Spoj1487 Query on a tree III 主席树+DFS序

    [BZOJ1803]Spoj1487 Query on a tree III Description You are given a node-labeled rooted tree with n n ...

  3. C - Dungeon Master

    C - Dungeon Master Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u ...

  4. 从ELK到EFK

    https://my.oschina.net/itshare/blog/775466 http://blog.51cto.com/467754239/1700828 日志系统 日志就是程序产生的,遵循 ...

  5. 如何使用 Opencv dnn 模块调用 Caffe 预训练模型?

    QString modelPrototxt = "D:\\Qt\\qmake\\CaffeModelTest\\caffe\\lenet.prototxt"; QString mo ...

  6. 使用远程管理工具Xshell

    介绍 目前常用的远程管理工具 Xshell -- 免费版/收费版 SecureCRT Putty 安装Xshell 选择免费版即可 连接服务器 连接成功 Xshell连接不上排查流程 还有可能是Lin ...

  7. web测试策略

    一.输入框 二.搜索功能 三.添加功能 四.修改功能 五.删除功能 六.注册.登陆模块 七.上传图片测试 八:文件导出 九.文件下载页面 十.查询结果列表 十一.cookie 一.输入框    1 字 ...

  8. element-ui tree组件 return span 标签报错

    原因: webpack无法解析vue-jsx的语法问题 解决方案 (1).安装依赖 [babel-plugin-transform-vue-jsx][1] npm install\ babel-plu ...

  9. Windows系统Python 安装第三方模块时,提示pip版本有问题

    如果按照提示输入python -m pip install --upgrade pip 还不行, 那么执行easy_install --upgrade pip 即可 参考:https://stacko ...

  10. 剑指offer 面试37题

    面试37题: 题:序列化二叉树 题目:请实现两个函数,分别用来序列化和反序列化二叉树 解题思路:首先来看二叉树的序列化,二叉树的序列化就是采用前序遍历二叉树输出节点,再碰到左子节点或者右子节点为Non ...