最近做一个项目遇到一个比较棘手的问题,项目后台采用struts2+Hibernate3+Spring3,前台采用ExtJs4。笔者目前仍是一名大二学生吗,后台框架完全是毫无任何基础,从零学,现学现用。

  由此贴出在前后台用JSON字符串进行前后台交互中所出现的问题。前台ExtJs不用多说直接在proxy代理里面写上Action的url即可。最为关键的则是在struts.xml配置文件中。由于再开完全不明白完全不懂,所以在struts.xml的配置中没有单独将json-default和struts-default写入两个package中,而是直接写在了同一个package中,和同伴百度无数仍然没有人给出详细的办法,最终才发现了应该这样写:原因就是命令空间不能相同,因为是不同的estends,否则写入同一个package中则会出现连登陆界面都会出现Not Found 404。(在此class给出的是一个别名,由此采用spring,具体则在applicationContext.xml配置)

    <package name="hr"     namespace="/"  extends="struts-default">
<action name="login" class="loginAction">
<result name="success">index.jsp</result>
</action>
</package> <package name="json" namespace="/json" extends="json-default">
<action name="titleAction" class="titleAction" method="allTitleJson">
<result type="json">
<param name="root">title</param>
</result>
</action>
</package>

  进行到此算是解决了一半的问题,不会连整个界面都进不去。而新的问题又出现了。

  到底是将整个对象都进行传递呢?还是先将对象在后台转换成字符串后再进行传递呢?百度一下:我所看到的是所有都是将序列化好了的JSON字符串进行传递,都是JSONObject,可试了无数次都无法正确进行返回,返回常常是500状态码。

  直接切入解决办法,同伴看到一个传递方法用map,想到既然可以用map即可以直接传递一个对象。故试着直接传递对象(即struts.xml配置文件中的title),OK成功。简单粗暴。是否能将List直接传呢?类比ExtJs,应该是可以的。OK果然成果。简单粗暴。

  所以最为简单粗暴的办法就是:在将从数据库中得到数据放到对象过后,直接将对象传递,因为在json-default中会进行转换,后来发现先转成JSON字符再传递也是可以的(会贴出源代码浅析,主要参考:http://yshjava.iteye.com/blog/1333602),原文作者采用struts2-json-plugin-2.1.8.1.jar。根据原文作者所做的分析,我在struts2-json-plugin-2.2.1稍加了一些修改(阅读顺序:JSONResult.java->JSONUtil.java->JSONWriter.java)。下载:http://pan.baidu.com/s/1hqzIPd6

Struts2中的JSON问题——后台返回JSON字符串到前台的更多相关文章

  1. spring boot 解决后台返回 json 到前台中文乱码之后出现返回json数据报错 500:no convertter for return value of type

    问题描述 spring Boot 中文返回给浏览器乱码 解析成问号?? fastJson jackJson spring boot 新增配置解决后台返回 json 到前台中文乱码之后,出现返回json ...

  2. struts2 的验证框架validation如何返回json数据 以方便ajax交互

    struts2 的验证框架validation简单,好用,但是input只能输出到jsp页面通过struts2的标签<s:fielderror  />才能取出,(EL应该也可以). 如果使 ...

  3. iOS 后台返回json解析出现的null的解决办法

    在后台返回值为Null为空时,我们代码没有判断时,程序就会崩溃.当时一直很疑惑是为啥,后来发现是数据问题,由于服务器的数据库中有些字段为空,然后以Json形式返回给客户端时就会出现这样的数据.当我们通 ...

  4. springmvc 1.接受日期类型的参数 2.后台返回json串的格式处理(返回json串null值处理为"")

    springmvc中的配置: <bean id="dateConvert" class="com.iomp.util.DateConvert"/> ...

  5. 后台返回json数据,前台显示代码

    List list = "从DAL获取的数据集合" //取出分页标签html int pageIndex = context.Request["pageIndex&quo ...

  6. 后台返回json字符串 页面js报错 Uncaught SyntaxError: Unexpected identifier

    后台json字符串是 [{"name": "报销申请", "id": "start"}, {"name&quo ...

  7. node模拟后台返回json书写格式报错--Unexpected token ' in JSON at position 1

    最近在学习Node的知识,就尝试写了一个注册登陆的简单功能,但是自己在模拟后台返回值的时候,总是报错Unexpected token ' in JSON at position 1,查找原因之后,是因 ...

  8. $.ajax传递字符串到后台,后台返回json对象

    var mall = { MallID: $("#createId").val().trim(), MallName: $("#createName").val ...

  9. JQuery处理json与ajax返回JSON实例

    一.JSON的一些基础知识. JSON中对象通过“{}”来标识,一个“{}”代表一个对象,如{“AreaId”:”123”},对象的值是键值对的形式(key:value). “[]”,标识数组,数组内 ...

随机推荐

  1. Weblogic+apache多虚拟主机

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...

  2. 【2017-04-01】JS字符串的操作、时间日期的操作、函数、事件、动画基础

    一.字符串的操作 1.转大写: s.toLowerCase(); 2.转大写: s.toUpperCase(); 3.字符串的截取: s.substr(3,4);      -从索引3开始截取,截取4 ...

  3. Framework7+vue demo

    最近看了下f7+vue做了几个测试页面,商品图片来自淘宝,代码等有时间了再传,

  4. Android通过AOP实现防止按钮连续点击

    防止连续点击的实现方式有很多种,比如,在所有的onclick里面加上防多次点击的代码,或者定义一个新的OnClickListener,在里面加上防多次点击的代码,然后项目中的所有OnClickList ...

  5. 对MySQL数据量日益增长产生的一点小想法

    最近一直在想一个问题 MySQL数据量日益庞大,目前单表总记录数有 300W+,导致sql语句执行的速度变慢,如果一直这样增长下去,总有一天会爆炸的.怎么办??怎么办?? 第一:想到的必然是 添加索引 ...

  6. 监听器的小示例:利用HttpSessionListener和HttpServletContextListener实现定时销毁HttpSession

    1.创建MyServletContextListener实现HttpServletContextListener接口 @Override public void contextDestroyed(Se ...

  7. Unity 脚本中各种[XXX]的用法

    1.[SerializeField]在Inspector中显示非public属性,并且序列化:若写在public修饰的字段前,相当于没写,Unity会自动为Public变量做序列化,序列化的意思是说再 ...

  8. 【外文翻译】 为什么我要写 getters 和setters

    原文作者: Shamik Mitra 原文链接:https://dzone.com/articles/why-should-i-write-getters-and-setters 当我开始我的java ...

  9. 容器 What, Why, How - 每天5分钟玩转容器技术(6)

    学习任何东西都可以按照3W的框架进行,容器技术也是一样,先回答 What.Why 和 How 这三个问题. What - 什么是容器? 容器是一种轻量级.可移植.自包含的软件打包技术,使应用程序可以在 ...

  10. 如何有效快速提高Java服务端开发人员的技术水平?

    我相信很多工作了3-5年的开发人员都会经常问自己几个问题: 1.为什么总是感觉技术没有质的提高? 2.如何能够有效和快速的提高自身的技术水平? 3.如何进入到一个牛逼的大公司,认识牛逼的人? 这篇文章 ...