在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使用它。

10-08 07:13