您的位置:首页 > 编程语言 > Java开发

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

2017-04-06 00:00 357 查看
摘要: 使SpringMVC 的同一个方法既可以返回Json格式数据,又可以返回HTML即视图

项目改造过程中,发现有一个类,在出错情况下就返回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";
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐