Я модернизировал существующее веб-приложение с помощью Spring.Очевидно, что проще начать с Spring, чем добавить его позже.
У нас есть сервлеты, которые могут принимать несколько параметров запроса.В зависимости от количества параметров будут предприняты различные действия.Например,
/doSomething?prod=15
отображает информацию для продукта 15, а
/doSomething?prod=15&owner=99
устанавливает владельца продукта 15 на 99, а
/doSomething?prod=15&delete=y
удаляет продукт 15.
У меня работает контроллер, но я не знаю, как вызывать разные методы в зависимости от количества параметров.Например, это работает (простой метод, чтобы убедиться, что у меня работают основы):
@RequestMapping(method=RequestMethod.GET)
public ModelAndView doIt(@RequestParam("prod") int prod, Model model)
{
ModelAndView mav = new ModelAndView();
mav.setViewName("jsonView");
return mav;
}
, но не это:
@RequestMapping(method=RequestMethod.GET)
public ModelAndView doIt(@RequestParam("prod") int prod, Model model)
{
ModelAndView mav = new ModelAndView();
mav.setViewName("jsonView");
return mav;
}
@RequestMapping(method=RequestMethod.GET)
public ModelAndView doIt(@RequestParam("prod") int prod,
@RequestParam("owner") int owner,
Model model)
{
ModelAndView mav = new ModelAndView();
mav.setViewName("jsonView");
return mav;
}
Это вызывает исключение IllegalStateException, "Методы обработчика неоднозначности сопоставленыдля HTTP-пути "/ mytest" "и переходит в состояние:
Если вы собираетесь обрабатывать один и тот же путь в нескольких методах, то выделите их в выделенный класс обработчика с этим путем, отображенным втип уровня!
Я не понимаю, что это сообщение говорит мне делать.
Если я настрою метод для приема большего количества или других параметров, чем передается в, я получаю«Запрос, отправленный клиентом, был синтаксически неверным ()».
Пол