尝试创建“文件名”部分中带有多个点的REST-ful URL-Spring 3.0 MVC


问题内容

我正在将Spring MVC(3.0)与注释驱动的控制器一起使用。我想为资源创建REST风格的URL,并且能够
要求(但仍然允许)URL末尾的文件扩展名(但如果没有扩展名,则假定为HTML内容类型)。只要文件名部分中没有点(句点/句号),它就可以与Spring
MVC一起使用。

但是,我的某些URL要求名称中带有点的标识符。例如:

http://company.com/widgets/123.456.789.500

在这种情况下,Spring会为扩展.500寻找内容类型,但没有找到错误。我可以使用诸如添加.html到末尾,对标识符进行编码或添加斜杠之类的变通方法。我对这些都不满意,但可能会加入.html

我一直未找到在Spring中覆盖默认文件扩展名检测的方法。

是否可以针对给定的控制器方法或URL模式等自定义或禁用文件扩展名检测?


问题答案:

@PathVariable模式匹配是有点颠簸,当涉及到的URL点(见SPR-5778)。你可以把它颠簸少(但更挑剔),并获得过点沉重的URL更好的控制,通过设置useDefaultSuffixPattern的属性DefaultAnnotationHandlerMappingfalse

如果尚未DefaultAnnotationHandlerMapping在上下文中明确声明a
(并且大多数人没有为您隐式声明它),则可以显式添加它并设置该属性。