gpt4 book ai didi

java - Spring @ModelAttribute 不应该将属性添加到 View 中吗?

转载 作者:行者123 更新时间:2023-12-01 10:49:01 24 4
gpt4 key购买 nike

据我了解,@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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com