чем отличается requestMapping на контроллере и методе - PullRequest
9 голосов
/ 17 марта 2011

Если у меня есть:

@RequestMapping("/user")
public class RegistrationController {

   @RequestMapping(value = "/register", method = RequestMethod.GET)
   public String getRegisterPage(Model model) {

В чем разница? Я имею в виду, что произойдет, если я удалю отображение /user, будет ли работать мое отображение /register?

Ответы [ 2 ]

9 голосов
/ 17 марта 2011

@RequestMapping на уровне класса не требуется. Без него все пути просто абсолютны, а не относительны.

см. 15.3.2 Отображение запросов с помощью @ RequestMapping

Это означает, что если вы укажете аннотации на уровне класса, URL должен быть относительным, поэтому для регистра он должен быть / user / register (URL-адрес для сопоставления с обработчиком) и аналогично.

2 голосов
/ 10 марта 2017

Как описано здесь , вы также можете использовать отображение уровня типа и относительное отображение пути на уровне метода, чтобы быть сухим и не дублировать корень при каждом методе.

@Controller
@RequestMapping("/employee/*")
public class Employee {

    @RequestMapping("add")
    public ModelAndView add(
            @RequestParam(value = "firstName") String firstName,
            @RequestParam(value = "surName") String surName) {
        //....
    }

    @RequestMapping(value={"remove","delete"})
    public ModelAndView delete(
        //....
    }   
}

Spring doc: На уровне метода относительные пути (например, "edit.do") поддерживаются в первичном отображении, выраженном на уровне типа.

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