Struts2中的JSON问题——后台返回JSON字符串到前台
最近做一个项目遇到一个比较棘手的问题,项目后台采用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字符串到前台的更多相关文章
- spring boot 解决后台返回 json 到前台中文乱码之后出现返回json数据报错 500:no convertter for return value of type
问题描述 spring Boot 中文返回给浏览器乱码 解析成问号?? fastJson jackJson spring boot 新增配置解决后台返回 json 到前台中文乱码之后,出现返回json ...
- struts2 的验证框架validation如何返回json数据 以方便ajax交互
struts2 的验证框架validation简单,好用,但是input只能输出到jsp页面通过struts2的标签<s:fielderror />才能取出,(EL应该也可以). 如果使 ...
- iOS 后台返回json解析出现的null的解决办法
在后台返回值为Null为空时,我们代码没有判断时,程序就会崩溃.当时一直很疑惑是为啥,后来发现是数据问题,由于服务器的数据库中有些字段为空,然后以Json形式返回给客户端时就会出现这样的数据.当我们通 ...
- springmvc 1.接受日期类型的参数 2.后台返回json串的格式处理(返回json串null值处理为"")
springmvc中的配置: <bean id="dateConvert" class="com.iomp.util.DateConvert"/> ...
- 后台返回json数据,前台显示代码
List list = "从DAL获取的数据集合" //取出分页标签html int pageIndex = context.Request["pageIndex&quo ...
- 后台返回json字符串 页面js报错 Uncaught SyntaxError: Unexpected identifier
后台json字符串是 [{"name": "报销申请", "id": "start"}, {"name&quo ...
- node模拟后台返回json书写格式报错--Unexpected token ' in JSON at position 1
最近在学习Node的知识,就尝试写了一个注册登陆的简单功能,但是自己在模拟后台返回值的时候,总是报错Unexpected token ' in JSON at position 1,查找原因之后,是因 ...
- $.ajax传递字符串到后台,后台返回json对象
var mall = { MallID: $("#createId").val().trim(), MallName: $("#createName").val ...
- JQuery处理json与ajax返回JSON实例
一.JSON的一些基础知识. JSON中对象通过“{}”来标识,一个“{}”代表一个对象,如{“AreaId”:”123”},对象的值是键值对的形式(key:value). “[]”,标识数组,数组内 ...
随机推荐
- js 操作 cookie
js 操作 cookie 的方法如下: //设置cookie function setCookie(cname, cvalue, exdays) { var d = new Date(); d.set ...
- 采用Spring AOP+Log4j记录项目日志
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6567672.html 项目日志记录是项目开发.运营必不可少的内容,有了它可以对系统有整体的把控,出现任何问题 ...
- maven的web项目手工发布
网上有很多人都认为maven的web项目发布时,要用这个命令那个命令,太麻烦了,用纯手工打造发布更为方便. 第一步,导出你所在项目maven的依赖包. 打开cmd窗口执行命令:mvn dependen ...
- 2017携程Web前端实习生招聘笔试题总结
考察encodeURI encodeURI(), decodeURI()它们都是Global对象的方法. encodeURI()通过将某些字符的每个实例替换代表字符的UTF-8编码的一个或多个转义字符 ...
- 如何选择合适的PHP开发框架
PHP作为一门成熟的WEB应用开发语言,已经深受广大开发者的青睐.与此同时,各式各样的PHP开发框架也从出不穷,面对如此多而且良莠不齐的开发框架,开发者们想必都会眼花缭乱,不知道该选择用哪个.其实并没 ...
- 【PAT_Basic日记】1005. 继续(3n+1)猜想
#include <stdio.h> #include <stdlib.h> /** 逻辑上的清晰和代码上的清晰要合二为一 (1)首先在逻辑上一定要清晰每一步需要干什么, (2 ...
- javascript中json对象json数组json字符串互转及取值
今天用到了json数组和json对象和json类型字符串之间互转及取值,记录一下: 1.json类型的字符串转换为json对象及取值 var jsonString = '{"bar" ...
- cookie和session的区别异同
1.用于保存页面信息:如自动登录,记住用户名 2.对于同一个网站只有一套cookie,它是以域名为单位的,一个域名就是一套,数量大小有限4k-10k,同时会具有过期时间 3.JS中通过document ...
- 微信开发(2)---微信小程序开发实战part1
微信开发现在来说,简单可以概括为两部分,微信公众号和微信小程序. 微信公众号的技术已经非常成熟.分为服务号和订阅号.简单的.可以弄一个个人订阅号,在编辑模式下就可以实现推送图文.自动回复.自定义菜单的 ...
- 分享我的学习记录 svn地址
地址:svn://121.42.160.2/myproject 用户名:scaner 密码:zhinengkan 这个用户只有读权限,没有修改的权限,如果有什么建议或代码中有不对的地方,欢迎再留言中告 ...