文档章节

SpringMVC 同一个方法返回Json与HTML数据的小trick

52iSilence7
 52iSilence7
发布于 2017/04/06 15:49
字数 341
阅读 132
收藏 0

精选30+云产品,助力企业轻松上云!>>>

项目改造过程中,发现有一个类,在出错情况下就返回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";
}

 

52iSilence7

52iSilence7

粉丝 8
博文 118
码字总数 105692
作品 0
海淀
高级程序员
私信 提问
加载中
请先登录后再评论。
spring mvc 相关知识点

1.Spring MVC概述: Spring MVC是Spring提供的一个强大而灵活的web框架。 借助于注解, Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单。这些控制器一般不直接处理请...

咸鱼恩
2019/03/26
0
0
Spring MVC Content Negotiation 转载

Spring MVC Content Negotiation 2017年11月15日 00:21:21 carl-zhao 阅读数:2983 Spring MVC有两种方式生成output的方法: 你可以使用restful式的@responsebody方法和HTTP消息转换器,通常是...

osc_9hj9pbyj
2019/04/25
2
0
Java常用注解

1.使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,  并且跳转到相应页面 若返回json等内容到页面,则需要加@ResponseBody注解 2.@RestController注解,相...

osc_k7wip3sn
2018/08/08
2
0
Spring Boot 之使用 Json 详解

目录 Spring Boot 之使用 Json 详解   简介   指定类的 Json 序列化、反序列化   @JsonTest   Spring Boot 中的 json 配置   Spring Boot 中使用 Fastjson   示例源码   引申和...

osc_57h7mkgj
01/17
7
0
java 注解

1.@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,  并且跳转到相应页面 若返回json等内容到页面,则需要加@ResponseBody注解 2.@RestController 注解,相当...

osc_y7ckpzr9
2019/04/27
1
0

没有更多内容

加载失败,请刷新页面

加载更多

唐山5.1级地震 百度人工智能技术帮上忙:成都减灾所提前30秒让北京、天津市民收到预警

本文作者:y****n 7月12日6时38分在河北唐山市古冶区发生5.1级地震,成都高新减灾研究所与应急管理部门联合建成的大陆地震预警网成功预警该地震,给唐山市提前3秒预警,给天津市提前33秒预警...

百度开发者中心
昨天
30
0
如何使用PHP发送POST请求? - How do I send a POST request with PHP?

问题: Actually I want to read the contents that come after the search query, when it is done. 实际上,我想阅读搜索查询之后的内容,完成之后。 The problem is that the URL only a......

javail
55分钟前
14
0
如何从Java读取文件夹中的所有文件? - How to read all files in a folder from Java?

问题: 如何通过Java读取文件夹中的所有文件? 解决方案: 参考一: https://stackoom.com/question/7jt2/如何从Java读取文件夹中的所有文件 参考二: https://oldbug.net/q/7jt2/How-to-rea...

富含淀粉
今天
25
0
主机“ xxx.xx.xxx.xxx”不允许连接到该MySQL服务器

问题: This should be dead simple, but I cannot get it to work for the life of me. 这本来应该很简单,但是我无法让它在我的一生中发挥作用。 I'm just trying to connect remotely to......

技术盛宴
今天
18
0
OSChina 周二乱弹 —— 附近居民接连失踪,你们有什么头绪吗

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《伤离别(原版)》- 黄霑 手机党少年们想听歌,请使劲儿戳(这里) @巴拉迪维 :睡...

小小编辑
今天
46
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部