обработка метода в Spring MVC - тот же URL-путь - PullRequest
1 голос
/ 07 января 2012

Я использую пружину MVC. У меня есть список лиц со следующим URL:

http://localhost/PersonsWebApp/persons/list

Мой контроллер:

@Controller
@RequestMapping("/persons")
public class PersonController {

    @RequestMapping(value="/list", method=RequestMethod.GET)
    public String allPersons(Model model){
....
}

Теперь я хотел бы добавить вид конкретного человека с URL-адресом, например:

http://localhost/PersonsWebApp/persons/george

если я попытаюсь использовать URL:

    @RequestMapping(value="/{firstname}", method=RequestMethod.GET)
    public String getPersonInfo(@PathVariable("fname") String firstname)
    ....

будет конфликт, так как есть два GET URL с одинаковым путем, верно? Как преодолеть эту проблему без изменения URL-адресов?

Ответы [ 2 ]

1 голос
/ 10 января 2012

Предложение Гжегожа действительно, и вы должны рассмотреть его.Однако, чтобы ответить на ваш вопрос, приведенный вами пример кода должен работать нормально, так как более конкретное соответствие (с меньшим количеством шаблонов) предпочтительнее, чем менее конкретное.

Следовательно, если входящий URL-адрес - / person / list, то должен вызываться метод allPersons ().

1 голос
/ 07 января 2012

Я бы предложил что-то другое.Например, github использует эти URL:

Разве это не хорошо?

Таким образом, вы можете попробовать такое отображение:

@Controller
public class PersonController {
    @RequestMapping(value="/persons", method=RequestMethod.GET)
    public String allPersons(Model model) {
    ...
    }

    @RequestMapping(value="/person/{firstname}", method=RequestMethod.GET)
    public String getPersonInfo(@PathVariable("fname") String firstname) {
    ...
    }
}

Вам не нужно помещать @RequestMapping на ваш @Controller (хотя вы можете).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...