【问题标题】:Spring-Social: No mapping found for HTTP requestSpring-Social:找不到 HTTP 请求的映射
【发布时间】:2013-11-09 23:17:53
【问题描述】:

今天我开始将https://github.com/spring-projects/spring-social-samples/tree/master/spring-social-showcase-sec-xml 中的示例代码迁移到我的一个较大的 spring 项目中,我花了一些时间才能够正确编译,但我终于做到了这一点。但是现在我无法访问任何应该映射到社交控制器的 URL:

警告 [http-8080-2] PageNotFound.noHandlerFound(1108) |无映射 找到带有 URI [/junkie/app/signin/facebook] 的 HTTP 请求 名称为“dispatcher”的 DispatcherServlet 警告 [http-8080-2] PageNotFound.noHandlerFound(1108) |未找到 HTTP 请求的映射 带有名称的 DispatcherServlet 中的 URI [/junkie/app/connect/facebook] '调度员'

我检查以确保控制器已初始化,因此我将它们自动连接到控制器中,它们似乎是这样,所以我现在不知所措。 在花了几个小时把我的头撞在墙上之后,我来到这里希望能找到一些帮助。 这是配置的方式: http://pastebin.com/tPi5Mtny

【问题讨论】:

    标签: java spring spring-mvc spring-social spring-social-facebook


    【解决方案1】:

    我遇到了同样的问题。我通过将 connectController bean 放入 dispatcher-servlet.xml 来解决它。在您的情况下,bean 是在根应用程序上下文而不是调度程序 servlet 专用上下文中实例化的。虽然根应用上下文是 servlet 上下文的父上下文,但这并不意味着 servlet 可以自动访问其父上下文中的 bean。由thread 透露。你的调度员永远不知道有一个 connectController。

    然后您可能会问为什么展示项目有效? (展示项目网址已更新:url)。它的 connectController bean 也在根应用程序上下文中加载的同一个 social.xml 文件中声明。它的调度程序 servlet 是如何访问控制器 bean 的?如果你仔细观察,你可能会发现showcase没有dispatcher-servlet.xml文件,在它的web.xml中,它声明了它的dispatcher servlet如下:

    <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value></param-value>
        </init-param>
        ...
    </servlet>
    

    如果 contextConfigLocation 为空值,则表示 servlet 没有专用上下文,只会使用根应用程序上下文。

    【讨论】:

    • 你能详细说明你的答案吗?
    • @DrakaSAN 更详细的补充
    • 将以下 ConnectController 放入 dispatcher-servlet.xml 中:
    猜你喜欢
    • 1970-01-01
    • 2013-12-20
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多