Springmvc的@ResponseBody方法返回Model时404:跳转jsp视图
我有一个控制器方法,添加了@ResponseBody注解
- @GetMapping(value = "/users")
- @ResponseBody
- public Map<String, Object> modelAttribute(Model model) {
- return model.asMap();
- }
访问该方法始终返回404,断点发现方法有执行。返回错误如下:
看到Message 提示是/WEB-INF/views/model/users.jsp 找不到。原来404 是这个,但是很奇怪不是已经添加了@ResponseBody注解吗?
为什么还会尝试去寻找一个jsp视图呢?
为此我断点DispatcherServlet并一步步跟踪,其原因是在 HandlerMethodReturnValueHandlerComposite的 调用selectHandler
寻找 返回值处理器(HandlerMethodReturnValueHandler)时
- private HandlerMethodReturnValueHandler selectHandler(Object value, MethodParameter returnType) {
- boolean isAsyncValue = isAsyncReturnValue(value, returnType);
- for (HandlerMethodReturnValueHandler handler : this.returnValueHandlers) {
- if (isAsyncValue && !(handler instanceof AsyncHandlerMethodReturnValueHandler)) {
- continue;
- }
- if (handler.supportsReturnType(returnType)) {
- return handler;
- } }
- return null;
- }
调用 handler.supportsReturnType(returnType) 这一方法通过返回值来匹配对应的handler,优先匹配到的是 ModelMethodProcessor,
为何是 ModelMethodProcessor, 查看其supportsReturnType方法:
- public boolean supportsReturnType(MethodParameter returnType) {
- return Model.class.isAssignableFrom(returnType.getParameterType());
- }
其就是通过检查返回值类型是否Model 接口类型,而ModelMethodProcessor 值处理器 又是跳转视图的,所以即使加了@ResponseBody注解依然会
去寻找视图。不知道这算不算是一个bug,这个坑千万注意不要踩。
Springmvc的@ResponseBody方法返回Model时404:跳转jsp视图的更多相关文章
- SpringMVC 利用@ResponseBody注解返回Json时,出现406 not acceptable 错误的解决方法。
1 在RequestMapping中加入produces属性如: @RequestMap(value="/path",produces="application/json ...
- SpringMVC使用@ResponseBody注解返回中文字符串乱码的问题
先说一下我的经历,以及解决问题的而过程. 在使用SpringMVC的时候,最开始的时候在配置文件中使用<mvc:annotation-driven />去自动注册DefaultAnnota ...
- vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效解决方法
我要实现的功能是在上传文件之前校验是否表格中存在重复的数据,有的话,需要弹窗提示是否覆盖,确认之后继续上传,取消之后,就不再上传. 项目中用的element-ui是V1.4.3 <el-uplo ...
- spring mvc 返回乱码SpringMVC使用@ResponseBody注解返回中文字符串乱码的问题
原文地址:https://www.cnblogs.com/fzj16888/p/5923232.html 先说一下我的经历,以及解决问题的而过程. 在使用SpringMVC的时候,最开始的时候在配置文 ...
- SpringMVC中 controller方法返回值
1)ModelAndView @RequestMapping(value="/itemEdit") public ModelAndView itemEdit(){ //创建模型视图 ...
- 解决springmvc使用ResponseBody注解返回json中文乱码问题
spring版本:4.2.5.RELEASE 查看“org.springframework.http.converter.StringHttpMessageConverter”源码,中有一段说明: B ...
- 【原】:关于使用springmvc的responseBody注解返回json的一些总结
配置不正确可能会出现406错误 1:首先需要导入三个jar包: 2:需要在springmvc的配置文件文件中添加转换器并开启注解驱动: 3:controller:这里返回object也是可以的; 4: ...
- springmvc 解决@ResponseBody注解返回中文乱码
使用messageConverters <bean class="org.springframework.web.servlet.mvc.method.annotation.Reque ...
- 《SpringMVC从入门到放肆》十一、SpringMVC注解式开发处理器方法返回值
上两篇我们对处理器方法的参数进行了分别讲解,今天来学习处理器方法的返回值. 一.返回ModelAndView 若处理器方法处理完后,需要跳转到其它资源,且又要在跳转资源之间传递数据,此时处理器方法返回 ...
随机推荐
- vue 自己编写向左滑动的动画 仿transition
vue 模板代码: <div class="content-wrap clearfix" :class="{slideIn: showIn, slideOut: s ...
- YII2 输出 执行的 SQL 语句,直接用程序输出
$query = User::find() ->,,,]) ->select(['username']) // 输出SQL语句 $commandQuery = clone $query; ...
- asp设置cookies过期时间
Response.Cookies("user_name").Expires=Date+1 '指定cookie保存时间 保留COOKIES一个小时 Response.Cookies( ...
- java-mybaits-014-数据库缓存设计【querycache、mybatis一级缓存、二级缓存】
一.概述 一般来说,可以在5个方面进行缓存的设计: 1.最底层可以配置的是数据库自带的query cache, 2.mybatis的一级缓存,默认情况下都处于开启状态,只能使用自带的Perpetual ...
- 查询数据,从链接地址中爬取文章内容jsoup
查询数据,从链接地址中爬取文章内容 protected void doGet(HttpServletRequest request, HttpServletResponse response) thr ...
- time zone list
GMT UTC WET WET CET CET MET CET ECT CET EET EET MIT Pacific/Apia HST Pacific/Honolulu AST America/An ...
- 安装私有docker仓库
简介: 虽然国内已经有了很多docker加速镜像,以前用的daocloud,最近又找到了阿里云. 但是私有网络部署kubernetes,用不了加速镜像,还是自己部署一个比较好. 一:安装docker ...
- (十四)访问标志 Access_flags
一.概念 上一章节讲到了常量池,如下图,常量池之后便是访问标志acess_flags,占2个字节(u2). 二.例子 编写一个接口. public interface Test{ public fin ...
- Swift4.0复习扩展
1.扩展计算式属性: 2.对方法进行扩展: /// 定义枚举类型Light, /// 它指定了基本类型String enum Light: String { case red = "red& ...
- 【grpc proto】python使用proto文件生成简易的服务端和客户端
1.安装python-grpc(注意,是grpcio包,不是grpc包!) pip install grpcio 2.编写.proto文件 grpc教程:http://doc.oschina.net/ ...