据我了解,@ModelAttribute
注释用于将属性放在 View 模型的右侧。我找到了名为 Handling form submission 的官方 Spring 指南还有一个带有 @ModelAttribute
的简单 Controller 示例:
@Controller
public class GreetingController {
@RequestMapping(value="/greeting", method=RequestMethod.GET)
public String greetingForm(Model model) {
model.addAttribute("greeting", new Greeting());
return "greeting";
}
@RequestMapping(value="/greeting", method=RequestMethod.POST)
public String greetingSubmit(@ModelAttribute Greeting greeting, Model model) {
model.addAttribute("greeting", greeting);
return "result";
}
}
为什么在最后一个方法中要手动添加 model 属性?由于 @ModelAttribute
,它不应该已经存在吗?
最佳答案
当您在返回值的方法中使用@ModelAttribute时,Spring会将该值添加到模型中,然后您可以在 View 中使用它。
@ModelAttribute("countries")
public List findAllCountries() {
return countryService.findAllCountries();
}
但是如果你在用requestMapping注释的方法中将它用作方法参数,Spring将在jsp页面中关联表单。在这段代码中
@RequestMapping(value="/greeting", method=RequestMethod.POST)
public String greetingSubmit(@ModelAttribute Greeting greeting, Model model) {
model.addAttribute("greeting", greeting);
return "result";
}
您正在获取表单值,因此需要将其添加到模型中才能在 View 中使用该值。
关于java - Spring @ModelAttribute 不应该将属性添加到 View 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34029244/