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 также очень полезны и являются хорошей (возможно, лучшей?) Альтернативой для отправки нескольких форм.