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";
}

 

转载于:https://my.oschina.net/liufq/blog/874162

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值