3.0中的Spring SimpleFormController


问题内容

我注意到该控制器在最近的春天已经过时,并且想知道替代控制器是什么吗?


问题答案:

在Spring
3.0中,您应该使用带有注释的简单类@Controller。这样的控制器可以处理多个请求。每个请求由其自己的方法处理。这些方法由注释@RequestMapping

您需要重新考虑的一件事是,一所古老的学校SimpleFormController处理许多不同的请求(至少:一个要获取表格,第二个要提交表格)。您现在必须手动处理。但是相信我,这会更容易。

例如,此REST风格的Controller将处理两个请求:

  • / 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
    }
}