Spring MVC: сопоставление нескольких URL-адресов одному контроллеру - PullRequest
44 голосов
/ 10 октября 2010

У меня есть более 20 форм, которые связаны с той же страницы.Некоторые формы используют один и тот же контроллер, а другие используют свои собственные.Например, формы A, B и C используют DefaultController, а форма D использует ControllerD.

Чего я хотел бы добиться, так это сопоставить URL-адрес каждой формы согласованным образом.

Таким образом, в идеале страница ссылок должна выглядеть следующим образом:

  • или это

    <a href="/formA.html">Form A</a>
    <a href="/formB.html">Form B</a>
    <a href="/formC.html">Form C</a>
    <a href="/formD.html">Form D</a>
    
  • или это:

    <a href="/form.html?name=A">Form A</a>
    <a href="/form.html?name=B">Form B</a>
    <a href="/form.html?name=C">Form C</a>
    <a href="/form.html?name=D">Form D</a>
    

Вопрос в том, каксопоставьте каждый URL с соответствующим контроллером.С первым шаблоном URL вы бы сопоставили formD.html с ControllerD, но не знаете, как сопоставить form[A|B|C].html с DefaultController.Со вторым шаблоном URL я даже не знаю с чего начать ...

Кто-нибудь делал что-то подобное?

1 Ответ

148 голосов
/ 01 апреля 2011

Поскольку никто, кажется, еще не поставил здесь полный ответ:

Аннотация @RequestMapping может принимать массив в качестве параметра "значение". Чтобы отобразить это на уровне контроллера, используя первый шаблон, вы должны использовать:

@Controller
@RequestMapping(value={"/formA.html", "/formB.html", "/formC.html"})
public class ControllerA {

}

А потом:

@Controller
@RequestMapping(value="/formD.html")
public class ControllerD {

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