前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解决:javax.servlet.ServletException: Circular view path []: would dispatch back to the current....

解决:javax.servlet.ServletException: Circular view path []: would dispatch back to the current....

作者头像
悟空宇
发布2024-03-11 16:04:14
3910
发布2024-03-11 16:04:14
举报
文章被收录于专栏:干JAVA的日常干JAVA的日常
报错如下:

原因:

当没有声明ViewResolver时,spring会注册一个默认的ViewResolver,就是JstlView的实例, 该对象继承自InternalResoureView。 JstlView用来封装JSP或者同一Web应用中的其他资源,它将model对象作为request请求的属性值暴露出来, 并将该请求通过javax.servlet.RequestDispatcher转发到指定的URL. Spring认为, 这个view的URL是可以用来指定同一web应用中特定资源的,是可以被RequestDispatcher转发的。 也就是说,在页面渲染(render)之前,Spring会试图使用RequestDispatcher来继续转发该请求。

报错地方代码:
代码语言:javascript
复制
@GetMapping("/async")
    public void async(){
        asyncService.executeAsync();
    }

通过原因分析,造成问题有两个因素:

①缺省转发 ②缺省返回值 ③view和path同名

解决方案如下

①消除缺省转发 ②如果是返回数据:则增加返回值 或 添加@ResponseBody注解 ③若是返回页面:修改view和path

例如修改为:
代码语言:javascript
复制
	@GetMapping("/async")
    public String async(){
        asyncService.executeAsync();
        return "ok";
    }

代码语言:javascript
复制
    @ResponseBody
    @GetMapping("/async")
    public void async(){
        asyncService.executeAsync();
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 报错如下:
  • 原因:
  • 报错地方代码:
  • 解决方案如下
  • 例如修改为:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档