我在我的REST API中使用文件名(例如:GET http://xxx/api/myImage.jpg),问题是@PathVariable删除了“ .jpg”。这个问题已经在这里问过几次并得到了回答。但对我没用
所以我搜索然后在
https://jira.springsource.org/browse/SPR-6524
“ …根本不应该将其与手动的DefaultAnnotationHandlerMapping实例结合使用;目前,这被设计为“或”选择,与and非常相似。”
“ mvc名称空间是简化的配置”。
真正的问题是mvc怎么办?和改变?
这些东西我发现自己。
提前致谢!
该mvc:annotationDriven标签基本上是将你的Spring上下文允许请求调度到控制器。
该标记将配置两个bean DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter。
在我提供某些要点之前,让我先弄清罗伊(Roy)提供的答案不正确。您不必提供mvc:annotation-driven标签来实例化默认bean。该标签可用于Spring 3.0+启用从Spring 3.0引入的新功能
(如果要向后兼容,请不要使用它,尤其是在使用基于旧控制器的类,如时MultiActionController,SimpleFormController)
现在让我们来看看这个标签的实际作用-
在Spring 3.1之前的版本中,默认的bean在哪里使用
AnnotationMethodHandlerExceptionResolver 这些在Spring 3.1中已弃用,如果您使用上述标记,它将被-
RequestMappingHandlerMapping
DefaultAnnotationHandlerMapping决定使用哪个控制器,然后AnnotationMethodHandlerAdapter选择处理请求的实际方法。RequestMappingHandlerMapping完成这两个任务。因此,该请求直接直接映射到该方法。
有迹象表明,由这些标签(实例化等基础设施豆类除了链接到默认值),如- ,MappedInterceptor,,等我不打算解释这些:),因为他们每一个都长的答案本身,所以谷歌,以获得更多信息。ConfigurableWebBindingInitializerSessionFlashManagerContentNegociationManager
MappedInterceptor
ConfigurableWebBindingInitializerSessionFlashManagerContentNegociationManager
PS:是的,Spring 3.1+会自动将@PathVariables公开给模型。你也有mvc:interceptors标签。但是我认为这与无关。
@PathVariables
mvc:interceptors