Подтвердить что ты не робот

Spring SimpleFormController в 3.0

Я заметил, что этот контроллер теперь устарел в последнем spring и задавался вопросом, что такое альтернативный контроллер?

4b9b3361

Ответ 1

В Spring 3.0 вы должны использовать простые классы, аннотированные @Controller. Такой контроллер может обрабатывать несколько запросов. Каждый запрос обрабатывается по собственному методу. Эти методы аннотируются @RequestMapping.

Одна вещь, которую вам нужно переосмыслить, это тот факт, что старая школа SimpleFormController обрабатывает множество разных запросов (по крайней мере: один для получения формы и второй для отправки формы). Вы должны справиться с этим сейчас вручную. Но поверьте мне, это проще.

Например, этот контроллер в стиле REST будет обрабатывать два запроса:

  • /book - POST: создать книгу
  • /book/form - GET: получить форму для создания

Код Java:

@RequestMapping("/book/**")
@Controller
public class BookController {

    @RequestMapping(value = "/book", method = RequestMethod.POST)
    public String create(
        @ModelAttribute("bookCommand") final BookCommand bookCommand) {

        Book book = createBookFromBookCommand(bookCommand);
        return "redirect:/book/" + book.getId();
    }

    @RequestMapping(value = "/book/form", method = RequestMethod.GET)
    public String createForm(final ModelMap modelMap) {
        modelMap.addAttribute("all", "what you need");
        return "book/create"; //book/create.jsp
    }
}

Ответ 3

В Spring 3.0 ваши контроллеры больше не должны наследовать базовый класс. Стандартный способ заключается в использовании аннотированных контроллеров.