在Spring 3.x中,是否可以在请求映射中包含PathVariable包括正向/?我尝试了我认为可以正确解析的其他正则表达式,但似乎它们从未设法获取正向/。
我发现了this related SO问题,但这更多地取决于参数的URL编码,这不完全是我的问题。
我尝试了以下@RequestMapping但无济于事:
@RequestMapping(value = "/template/{definitionName:[a-zA-Z0-9_./]+}/{attributeName:.+}", method = RequestMethod.GET)
@RequestMapping(value = "/template/{definitionName}/{attributeName:[^/]+}", method = RequestMethod.GET)
例如,我正在尝试匹配以下URL:
http://localhost:8880/mustache/template/users/info/user_info.updateable
哪里
“用户/信息”将为definitionName
“ user_info.updateable”将是attributeName
完整的方法原型将是:
@RequestMapping(value = "/template/{definitionName:[a-zA-Z0-9_./]+}/{attributeName:.+}", method = RequestMethod.GET)
public static void fetchTemplateDefinition(
@PathVariable("definitionName") final String definitionName,
@PathVariable("attributeName") final String attributeName,
final HttpServletRequest request,
final HttpServletResponse response) throws ServletException, IOException
{...}
有什么方法可以匹配URL中包含/的参数?
最佳答案
开箱即用是不可能的。 Spring调用PathMatcher.extractUriTemplateVariables()
提取路径变量。 PathMatcher
的默认实现是AntPathMatcher
,它使用/
作为分隔符将路径和路径模式分成多个部分。
唯一的解决方案是实现自己的PathMatcher
(或扩展AntPathMatcher
)并告诉Spring使用它。