解决SpringMVC:HTTP Status 500 - Circular view path [/index.html]: would dispatch back to the current handler URL [/index.html] again.

匆匆过客 提交于 2019-12-03 20:45:16

一、问题

HTTP Status 500 - Circular view path [/index.html]: would dispatch back to the current handler URL [/index.html] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)

 

二、原因分析

(1)在springmvc.xml配置文件中找到视图解析器,查看源码可知SpringMVC默认的视图解析器就是JstlView的实例,如下图所示。

  

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

 

 

(3)进入InternalResoureView.java可以发现,如果view name和path是相同的字符串,根据Spring的转发规则,就等于让自己转发给自己,会陷入死循环。所以Spring会检查到这种情况,于是抛出Circular view path异常。还有一种情况是日志虽然报了这段异常,但是原因其实是viewResolver配置错误。

 

(4)陷入死循环如下图。

 

 

三、解决方案

 修改view或者path的名字,让两者不同名。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!