zoukankan      html  css  js  c++  java
  • javax.servlet.ServletException: Circular view path [login]: would dispatch back to the current handler URL [/login] again. Check your ViewResolver setup!--异常

    原因
    当没有声明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异常。

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

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

    缺省转发
    view和path同名
    所以,解决方案如下
    1.消除缺省转发
    2.修改view和path,让他们不同名(路径与跳转页面名字重合)

  • 相关阅读:
    17. Letter Combinations of a Phone Number
    16. 3Sum Closest
    15. 3Sum
    14. Longest Common Prefix
    13. Roman to Integer
    12. Integer to Roman
    11. Container With Most Water
    10. Regular Expression Matching
    9. Palindrome Number
    8. String to Integer (atoi)
  • 原文地址:https://www.cnblogs.com/chensStudy/p/12778494.html
Copyright © 2011-2022 走看看