2015-04-20 4 views
0

У меня есть следующие сопоставления запросов в моих контроллерах, но когда я ударил /united-states/georgia, он всегда идет к методу, сопоставленному с {country/city}, хотя. Как заставить его перейти к методу объединенных штатов. Любое предложение будет оценено по достоинству.Усвоение сопоставления весенних запросов

@RequestMapping(value = "/{country:united-states|canada}/{state}") 
public String getCitites(@PathVariable String country,@PathVariable String state){ 
..... 
} 

@RequestMapping(value = "/{country}/{city}") 
public String getDetailsInCity(@PathVariable String country,@PathVariable String city){ 
..... 
} 
+0

попытаться изменить requestmapping getCities в @RequestMapping (value = "/ {country: united-states | canada} - {state}") –

+0

Я не могу изменить свой шаблон URL, чтобы быть штат. У меня больше осложнений в приложении, если я это сделаю. – minion

+0

Ваши сопоставления будут сталкиваться; вам нужно иметь какой-то способ устранить их, например. '/ cities/{country}/{state}' и '/ details/{country}/{city}' – beerbajay

ответ

1

Я не 100% уверен, что @RequestMapping аннотаций поддерживают регулярные выражения lookarounds но попытаться исключить «ЮНАЙТЕД-государства» и «канада» из запроса отображения аннотаций для getDetailsInCity()

@RequestMapping(value = "/{country:^(?!.*canada)(?!.*united-states).*$}/{city}") 
public String getDetailsInCity(@PathVariable String country,@PathVariable String city){ 
..... 
} 

меня regex отсюда: How to negate specific word in regex?

+0

Хотя это не чистое решение, это работает. Я приму это как ответ, если не появится другой лучший ответ. Благодарю. – minion