2010-10-10 3 views
34

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

То, что я хотел бы достичь, - это сопоставить 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 я даже не знаю, с чего начать ...

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

ответ

127

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

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

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

} 

А потом:

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

} 
+0

Спасибо за явный ответ :) – Hossein

+0

я положил это на моем методе вместо контроллера и он отлично работает. – user3885927

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