2014-10-13 3 views
6

Я хотел бы извлечь переменные пути и параметры запроса из URL с использованием существующих функций Spring. У меня есть строка формата пути, которая действительна для MVC @RequestMapping или UriComponentsBuilder. У меня также есть реальный путь. Я хотел бы извлечь переменные пути из этого пути.Утилита Spring для разбора URI

Например.

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

Может ли это помочь вам в правильном направлении: [Spring 3 RequestMapping: Получить значение пути] (http://stackoverflow.com/questions/3686808/spring-3-requestmapping-get-path-value)? –

ответ

9

Вот он идет:

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")); 
0

Первое место для поиска находится в исходном коде org.springframework.web.servlet.mvc.method.annotation.PathVariableMethodArgumentResolver это распознаватель используется для @PathVariable аннотация в MVC. Посмотрите на метод «resolveName», чтобы увидеть, что делает код Spring. Там вы можете найти класс, который использует MVC. Затем вы можете увидеть, можете ли вы удовлетворить его требованиям.

Смежные вопросы