Spring MVC @ModelAttribute方法
问题内容:
关于Spring MVC
@ModelAttribute
方法的问题,在控制器@RequestMapping
方法中设置模型属性与通过方法分别设置属性@ModelAttribute
相比,哪种方法更好,使用最多?
从设计的角度来看,从以下方面考虑哪种方法更好:
方法1
@ModelAttribute("message")
public String addMessage(@PathVariable("userName") String userName, ModelMap model) {
LOGGER.info("addMessage - " + userName);
return "Spring 3 MVC Hello World - " + userName;
}
@RequestMapping(value="/welcome/{userName}", method = RequestMethod.GET)
public String printWelcome(@PathVariable("userName") String userName, ModelMap model) {
LOGGER.info("printWelcome - " + userName);
return "hello";
}
方法2
@RequestMapping(value="/welcome/{userName}", method = RequestMethod.GET)
public String printWelcome(@PathVariable("userName") String userName, ModelMap model) {
LOGGER.info("printWelcome - " + userName);
model.addAttribute("message", "Spring 3 MVC Hello World - " + userName);
return "hello";
}
问题答案:
一个没有比另一个更好。他们俩都有另一个目的。
- 方法: 如果您需要始终使用某些属性填充特定控制器的模型,则方法级别
@ModelAttribute
更有意义。 - 参数: 要绑定请求中的数据并将其隐式添加到模型中时,请在参数上使用它。
在更好的方法上回答您的问题
我会说方法2更好,因为数据特定于该处理程序。