方法之前的@ModelAttribute与方法参数内部的区别

时间:2017-03-03 16:01:40

标签: spring spring-mvc model-view-controller model

这两个@ModelAttribute用法有什么区别?

    public String getMethod(@ModelAttribute UserDetails userDetails){ ... }

@ModelAttribute
public UserDetails getAccount(@RequestParam String user, @RequestParam String emailId)

1 个答案:

答案 0 :(得分:1)

在这两种情况下@ModelAttribute都会为您的模型添加一个属性(这里不足为奇)。不同之处在于,当在方法上使用时,此方法将在之前执行调用适当的@RequestMapping方法。如果要添加常用属性,可以使用它(下拉选项的列表可能是一个正确的示例)。

相反,当用作参数注释时,Spring会尝试将已存在的模型属性传递给您的方法。如果这不存在,Spring将首先为您创建一个新属性。

详情请参阅文档:http://docs.spring.io/spring/docs/4.1.7.RELEASE/spring-framework-reference/html/mvc.html#mvc-ann-modelattrib-methods

希望对你有所帮助。