前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Springboot极简教程》问题解决:javax.servlet.ServletException: Circular view path [login]: would dispatch back

《Springboot极简教程》问题解决:javax.servlet.ServletException: Circular view path [login]: would dispatch back

作者头像
一个会写诗的程序员
发布2018-08-20 10:28:53
1.5K0
发布2018-08-20 10:28:53
举报
代码语言:javascript
复制
javax.servlet.ServletException: Circular view path [login]: would dispatch back to the current handler URL [/login] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)
.......

原因

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

代码:

代码语言:javascript
复制
if (path.startsWith("/") ? uri.equals(path) : uri.equals(StringUtils.applyRelativePath(uri, path))) {
    throw new ServletException("Circular view path [" + path + "]: would dispatch back " +
                        "to the current handler URL [" + uri + "] again. Check your ViewResolver setup! " +
                        "(Hint: This may be the result of an unspecified view, due to default view name generation.)");
}

从这段代码可以看出,如果你的view name和你的path是相同的字符串,根据Spring的转发规则,就等于让自己转发给自己,会陷入死循环。所以Spring会检查到这种情况,于是抛出Circular view path异常。

还有一种情况是,日志虽然报了这段,但是原因其实是viewResolver配置错误。

解决

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

  1. 缺省转发
  2. view和path同名

所以,解决方案如下 1.消除缺省转发 2.修改view和path,让他们不同名

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.03.29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原因
  • 解决
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档