SpringMVC 同一个方法返回Json与HTML数据的小trick
2017-04-06 00:00
357 查看
摘要: 使SpringMVC 的同一个方法既可以返回Json格式数据,又可以返回HTML即视图
项目改造过程中,发现有一个类,在出错情况下就返回Json数据,在正常情况下就返回HTML页面,在返回Json数据情况是直接往response的writer中写入了返回值,然后方法返回null,示例:
SpringMVC在返回null时默认使用URL的路径来寻找jsp,导致返回的数据既包含Json又包含HTML
第一个在脑海中冒出来的解决办法就是更改SpringMVC view resolver的默认行为,使得在返回null的时候不解析,不过这个方案很快就否决了,因为不清楚其他方法有没有直接使用SpringMVC的这种默认行为来解析视图的,更改隐患很大。
想了很久,想出了一个trick方案,新建一个jstl_view_name_real.jsp,内容与jstl_view_name的一样,将jstl_view_name里面的内容清空,这样虽然SpringMVC会解析,但是内容为空,返回的数据就是正常的Json数据了。修改后代码
项目改造过程中,发现有一个类,在出错情况下就返回Json数据,在正常情况下就返回HTML页面,在返回Json数据情况是直接往response的writer中写入了返回值,然后方法返回null,示例:
@RequestMapping("demo") public String demo(){ if(error){ String json = "{code:\""+code+"\",msg:\""+message+"\"}"; response.getWriter().write(content); response.getWriter().flush(); return null; } return "jstl_view_name"; }
SpringMVC在返回null时默认使用URL的路径来寻找jsp,导致返回的数据既包含Json又包含HTML
第一个在脑海中冒出来的解决办法就是更改SpringMVC view resolver的默认行为,使得在返回null的时候不解析,不过这个方案很快就否决了,因为不清楚其他方法有没有直接使用SpringMVC的这种默认行为来解析视图的,更改隐患很大。
想了很久,想出了一个trick方案,新建一个jstl_view_name_real.jsp,内容与jstl_view_name的一样,将jstl_view_name里面的内容清空,这样虽然SpringMVC会解析,但是内容为空,返回的数据就是正常的Json数据了。修改后代码
@RequestMapping("demo") public String demo(){ if(error){ String json = "{code:\""+code+"\",msg:\""+message+"\"}"; response.getWriter().write(content); response.getWriter().flush(); return null; } return "jstl_view_name_real"; }
相关文章推荐
- (已解决)如何让Spring MVC Controller的同一个方法,根据逻辑判断返回JSON或者HTML视图?
- jquery ajax调用后台方法返回json数据转自http://www.cnblogs.com/xiaoxi/archive/2011/03/31/2000803.html
- SpringMVC 方法里返回json或跳到一个页面
- springMVC 返回json数据的方法
- Springmvc 4.x利用@ResponseBody返回Json数据的方法
- SpringMVC 目标方法返回 json 格式数据
- SpringMvc返回报文形式的控制-验证方法: JSON or HTML or XML
- 在Spring MVC Controller的同一个方法中,根据App还是WEB返回JSON或者HTML视图。
- springMVC 中url后缀使用html,不能返回json数据,否则会报406错误
- 利用springmvc提供一个HandlerExceptionResolver接口实现出错返回Json数据
- springmvc使用htm、html后缀时,返回json数据格式异常
- AFNetworking 2.0 获取json数据时,返回 NSLocalizedDescription=Request failed: unacceptable content-type: text/html, 解决方法.
- 如何让Spring MVC Controller的同一个方法,根据逻辑判断返回JSON或者HTML视图?
- jQuery中ajax请求后台返回json数据并渲染HTML的方法
- springMVC返回复杂的json格式数据方法
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目
- 用Springmvc 返回json数据,填充html 或 jsp页面。
- springmvc 返回json数据日期格式化方法
- SpringMVC中controller返回json数据的两种方法
- .NET easyui form提交后,返回json数据在IE下弹出下载的问题解决方法