我想使用现有的Spring功能从URL中提取路径变量和查询参数。我有一个路径格式字符串,对MVC @RequestMapping
或UriComponentsBuilder
有效。我也有一条实际的道路。我想从该路径中提取路径变量。
例如。
String format = "location/{state}/{city}";
String actualUrl = "location/washington/seattle";
TheThingImLookingFor parser = new TheThingImLookingFor(format);
Map<String, String> variables = parser.extractPathVariables(actualUrl);
assertThat(variables.get("state", is("washington"));
assertThat(variables.get("city", is("seattle"));
它类似于UriComponentsBuilder
的反转,在我阅读Javadocs时没有任何解析功能。
答案 0 :(得分:10)
这就是:
String format = "location/{state}/{city}";
String actualUrl = "location/washington/seattle";
AntPathMatcher pathMatcher = new AntPathMatcher();
Map<String, String> variables = pathMatcher.extractUriTemplateVariables(format, actualUrl);
assertThat(variables.get("state"), is("washington"));
assertThat(variables.get("city"), is("seattle"));
答案 1 :(得分:0)
首先要查看的是org.springframework.web.servlet.mvc.method.annotation.PathVariableMethodArgumentResolver的源代码,这是用于MVC中@PathVariable注释的解析器。查看方法“resolveName”以查看Spring代码正在执行的操作。从那里你应该能够找到MVC正在使用的类。然后你可以看看你是否能满足你的要求。