今天,我开始将https://github.com/spring-projects/spring-social-samples/tree/master/spring-social-showcase-sec-xml中的示例代码迁移到我的一个较大的spring项目中,它花了一些时间,直到我能够毫无错误地编译,但我最终做到了这一点。但是,现在我无法访问应该映射到社会控制器的任何URL:
警告http-8080-2 PageNotFound.noHandlerFound(1108) \x{e76f}在DispatcherServlet中未找到带有URI /junkie/app/signin/facebook的HTTP请求的映射,警告名称为'dispatcher‘,警告http-8080-2 PageNotFound.noHandlerFound(1108)在DispatcherServlet中未找到名称为'dispatcher’的HTTP请求与URI /junkie/app/connect/facebook的映射。
我检查了一下,以确保控制器在哪里初始化,所以我在控制器中自动设置了它们,它们看起来是这样的,所以我现在不知所措。在花了几个小时把头撞在墙上之后,我来到这里,希望能找到一些帮助。下面是配置的方式:http://pastebin.com/tPi5Mtny
发布于 2014-06-06 08:44:34
我也有同样的问题。我通过将connectController bean放到dispatcher-servlet.xml中来解决这个问题。在您的示例中,bean是在根应用程序上下文中实例化的,而不是dispatcher servlet专用上下文。尽管根应用程序上下文是servlet上下文的父上下文,但并不意味着servlet可以在其父上下文中自动访问bean。由这个线程揭示。你的调度员永远不知道有一个connectController。
然后,您可能会问,为什么展示项目工作?(展示项目url被更新:url)。它的connectController bean也声明在根应用程序上下文中加载的同一个social.xml文件中。为什么它的dispatcher servlet可以访问控制器bean?如果仔细观察,您可能会发现该展示没有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没有专门的上下文,只会使用根应用程序上下文。
https://stackoverflow.com/questions/19884344
复制相似问题