专栏首页dylanliuSpringMVC 同一个方法返回Json与HTML数据的小trick

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring Transaction 管理原理

    Spring 使用的都是声明式事务,不过在最开始时 Spring 支持的是编程式事务。本篇讲的是 Spring 最初版本 interface21(以下使用它指代...

    Dylan Liu
  • 设计原则之里氏替换原则(LSP)

    里氏替换原则是在做继承设计时需要遵循的原则,不遵循了 LSP 的继承类会带来意想不到的问题。

    Dylan Liu
  • 1+2+3+..+∞= -1/12

    要求解这个等式,需要引入两个辅助等式: A = 1-1+1-1+1-1... B = 1-2+3-4+5-6...

    Dylan Liu
  • Single cell RNA-seq data analysis with Chipster course

    前面我们分享了芬兰CSC的培训课程:Single cell RNA-seq data analysis with R

    生信技能树jimmy
  • 好好编程-物流项目20【客户管理-删除客户】

    用户4919348
  • 从头开始在20行代码中查找面部边缘

    正在阅读一本机器学习书,并了解到边缘是机器的重要特征输入,用于了解图片中是否有物体,在这种情况下是面部。看看左边只有边缘的图,可以很容易地说出它是人眼所面孔的,...

    代码医生工作室
  • 用Python更加了解微信好友

    运行平台: Windows Python版本: Python3.6 IDE: Sublime Text

    王强
  • SSE图像算法优化系列七:基于SSE实现的极速的矩形核腐蚀和膨胀(最大值和最小值)算法。

      因未测试其他作者的算法时间和效率,本文不敢自称是最快的,但是速度也可以肯定说是相当快的,在一台I5机器上占用单核的资源处理 3000 * 2000的灰度...

    用户1138785
  • 重拾Kotlin(9)-空安全

    在 Kotlin 中,类型系统区分一个引用是可以容纳 null (可空引用)还是不能容纳(非空引 用)。 例如,String 类型的常规变量不能指向 nu...

    叶应是叶
  • 平均一个病人感染3.77人!近9千病例新研究:新冠病毒重男轻女偏爱中老年,元旦是第一个引爆点

    背后的依据,来自于国内30个省级行政区近9000病例的分析,是迄今为止样本量最大的新冠病毒研究。

    量子位

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动