我正在使用 Spring MVC 3,并且遇到 URL 映射问题。我有一个方法
@Controller
public class DocumentController {
@RequestMapping( value="/docs/pupil/classes/{courseCategoryType}", method=RequestMethod.GET )
public ModelAndView listClassesForPupil( @PathVariable("courseCategoryType") final String courseCategoryType ){
System.err.print( "\n\n\n\t\t--- XXXXX ---\n\n\n" );
}
}
我正在尝试使用Spring URI 模板语法 http://static.springsource.org/spring/docs/3.1.0.M1/spring-framework-reference/html/mvc.html#mvc-ann-requestmapping-uri-templates,我知道它正在被映射,因为在控制台中我看到:
11:22:12,108 INFO DefaultAnnotationHandlerMapping:411 - Mapped URL path [/docs/pupil/classes/{courseCategoryType}] onto handler 'documentController'
11:22:12,108 INFO DefaultAnnotationHandlerMapping:411 - Mapped URL path [/docs/pupil/classes/{courseCategoryType}.*] onto handler 'documentController'
11:22:12,108 INFO DefaultAnnotationHandlerMapping:411 - Mapped URL path [/docs/pupil/classes/{courseCategoryType}/] onto handler 'documentController'
但是,当我输入网址时https://localhost/docs/pupil/classes/ACADEMIC
在浏览器中我收到 404 错误,并且在控制台中看不到任何打印内容。我替换了仅抛出异常的打印输出代码,并且它似乎也没有被抛出。一位同事建议应该有一种方法来查看 URL 解析是如何完成的,但是谷歌搜索 http://www.google.ca/search?q=spring%20url%20resolver%20debug%20enable似乎没有发现任何东西。
关于如何调试这个有什么建议吗?
对于这样的问题,我觉得开始调试的最佳“入口点”是方法getHandler(HttpServletRequest request)
of the DispatcherServlet
.
在这个方法中每个配置HandlerMapping
检查其是否负责处理您的具体请求。如果您的请求达到了这一步,您可以非常确定这是 spring 上下文中的配置问题。
留意该类型的处理程序RequestMappingHandlerMapping
(or DefaultAnnotationHandlerMapping
,如果您使用的是旧版本的 Spring),这些通常是HandlerMapping
由基于注释的控制器配置使用。
在另一种情况下,请确保“前面”没有任何内容DispatcherServlet
过滤您的请求(就像您的情况一样)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)