我正在将Spring MVC(3.0)与注释驱动的控制器一起使用。我想为资源创建REST风格的URL,并且能够 不 要求(但仍然允许)URL末尾的文件扩展名(但如果没有扩展名,则假定为HTML内容类型)。只要文件名部分中没有点(句点/句号),它就可以与Spring MVC一起使用。
但是,我的某些URL要求名称中带有点的标识符。例如:
http://company.com/widgets/123.456.789.500
在这种情况下,Spring会为扩展.500寻找内容类型,但没有找到错误。我可以使用诸如添加.html到末尾,对标识符进行编码或添加斜杠之类的变通方法。我对这些都不满意,但可能会加入.html。
.500
.html
我一直未找到在Spring中覆盖默认文件扩展名检测的方法。
是否可以针对给定的控制器方法或URL模式等自定义或禁用文件扩展名检测?
该@PathVariable模式匹配是有点颠簸,当涉及到的URL点(见SPR-5778)。你可以把它颠簸少(但更挑剔),并获得过点沉重的URL更好的控制,通过设置useDefaultSuffixPattern的属性DefaultAnnotationHandlerMapping来false。
@PathVariable
useDefaultSuffixPattern
DefaultAnnotationHandlerMapping
false
如果尚未DefaultAnnotationHandlerMapping在上下文中明确声明a (并且大多数人没有为您隐式声明它),则可以显式添加它并设置该属性。