本文主要是介绍Circular view path [ok]: would dispatch back to the current handler URL [/user/ok] again. Check your,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近在学习SpringBoot的时候遇到:Circular view path [ok]: would dispatch back to the current handler URL [/user/ok] 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来继续转发该请求。如下代码:
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异常。
boot中,使用thymeleaf,会加入starter依赖,引入这个依赖的时候了,boot会自动进行配置转发规则,所以只要记得在pom文件中声明依赖即可
但是我这里引入了 thymeleaf 还是不行,并且自己定了版本,这样的情况将properties中的注释掉,在dependecy中定义版本即可 解决
转自: https://blog.csdn.net/u010372981/article/details/78149483
这篇关于Circular view path [ok]: would dispatch back to the current handler URL [/user/ok] again. Check your的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!