Spring 3 MVC Обработка отправки нескольких форм с помощью одного контроллера

Spring 3 MVC Обработка отправки нескольких форм с помощью контроллера.

Я разрабатываю страницу JSP с несколькими формы. 1) Поиск клиента, 2) Поиск продукта, 3) Печать чего-то и т. Д. У меня другой объект привязки формы, привязанный к каждой форме, и мой код контроллера выглядит примерно так, как показано ниже

  @Controller
  @RequestMapping(value="/search.do")
  public class SearchController {

    @RequestMapping(method = RequestMethod.GET)
    public String pageLoad(ModelMap modelMap) {
      modelMap.addAttribute("productSearch", new ProductSearchCriteria());
        modelMap.addAttribute("customerSearch", new CustomerSearchCriteria());
        modelMap.addAttribute("print", new PrintForm());
    }

    @RequestMapping(method = RequestMethod.POST)
    public ModelAndView searchProducts(@ModelAttribute("productSearch") ProductSearchCriteria productSearchCriteria,
            BindingResult result, SessionStatus status) {
            //Do Product search
            return modelAndView;
    }

    @RequestMapping(method = RequestMethod.POST)
    public ModelAndView searchCustomers(@ModelAttribute("customerSearch") CustomerSearchCriteria customerSearchCriteria,
            BindingResult result, SessionStatus status) {
            //Do Customer search
            return modelAndView;
    }

    @RequestMapping(method = RequestMethod.POST)
    public ModelAndView printSomething(@ModelAttribute("print") PrintForm printForm,
            BindingResult result, SessionStatus status) {
            //Print something
            return modelAndView;
    }
  }

Выше, конечно, не работает, как я предполагал . Я получаю исключение: «Метод запроса« POST »не поддерживается» . Если у меня есть только один метод POST внутри вышеуказанного контроллера, скажем, searchProducts, он работает хорошо. Но этого не будет с более чем одним методом с POST. Я также попытался добавить скрытый параметр в JSP и изменить сигнатуры методов, аналогичные приведенным ниже, только для того, чтобы снова получить то же исключение.

  @RequestMapping(method = RequestMethod.POST, params="pageAction=searchProduct")
    public ModelAndView searchProducts(@ModelAttribute("productSearch") ProductSearchCriteria productSearchCriteria,
            BindingResult result, SessionStatus status) {
            //Do Product search
            return modelAndView;
   }

Кто-нибудь может предложить правильный способ достижения вышеуказанного? Также приветствуются любые ссылки на исходный материал или дополнительное чтение. Спасибо.

РЕДАКТИРОВАТЬ №1: Вышеупомянутый подход с params = "pageAction = searchProduct" работает отлично, если вы получаете свой скрытый параметр прямо в JSP (см. Комментарий ниже). В дополнение к этому, ответы @Bozho и @Biju Kunjummen также очень полезны и являются хорошей (возможно, лучшей?) альтернативой для решения проблемы отправки нескольких форм.

8
задан Benjamin 9 November 2013 в 15:23
поделиться