Spring MVC @GetMapping("/v1/**") 与 ANT 通配符:如何获得完整路径?

Ste*_*yts 4 java spring spring-mvc

考虑一个@RestController带有@GetMapping映射到的 Spring MVC/v1/**来处理所有子路径。

@RestController
public class MyController {

    @GetMapping(value = "/v1/**", produces = MediaType.TEXT_HTML_VALUE)
    public ModelAndView handle(String fullPathInMethodArg) {
        ...
        String fullPathInLocalVar = ...;
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能检索完整路径?

理想情况下,我想找回它作为方法的参数:String fullPathInMethodArg

另外,我想找回它作为一个局部变量:String fullPathInLocalVar

ixe*_*ion 6

我认为这回答了你的问题:

@RequestMapping("/v1/**")
public void foo(HttpServletRequest request) {
    String fullPath = (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
    String subPath = StringUtils.removeStart(fullPath, "/v1");
    ...
}
Run Code Online (Sandbox Code Playgroud)

Spring 3 RequestMapping:获取路径值