春季MVC中的@ModelAttribute是什么?
在Spring MVC中的目的是什么和用途?@ModelAttribute
在Spring MVC中的目的是什么和用途?@ModelAttribute
@ModelAttribute
引用 Model 对象的属性(MVC 中的 M ;)因此,假设我们有一个表单,其中包含一个名为“Person”的表单支持对象,然后您可以让Spring MVC通过使用注释将此对象提供给Consctor方法:@ModelAttribute
public String processForm(@ModelAttribute("person") Person person){
person.getStuff();
}
另一方面,注释用于定义应成为模型一部分的对象。因此,如果要在模型中引用 Person 对象,则可以使用以下方法:
@ModelAttribute("person")
public Person getPerson(){
return new Person();
}
此带注释的方法将允许访问视图中的 Person 对象,因为它会在 Spring 自动添加到模型中。
我知道这是一根旧线,但我想把我的帽子扔进戒指里,看看我能不能把水搅浑一点:)
我发现我最初难以理解的是Spring决定将几个注释合并为一个的结果。一旦我把它分成几个较小的注释,它就变得更加清晰了:@ModelAttribute
对于参数注释,可以将其视为等效项,即它尝试从Spring管理模型中检索具有给定名称的bean。如果未找到命名的 Bean,则它不会引发错误或返回 ,而是隐式承担角色,即使用默认构造函数创建新实例并将 Bean 添加到模型中。@ModelAttribute
@Autowired + @Qualifier
null
@Bean
对于方法注释,可以将其视为 等效的 ,即它将用户代码构造的 Bean 放在模型中,并且它总是在请求处理方法之前调用。@ModelAttribute
@Bean + @Before
比喻上,我看到的是以下内容(请不要从字面上理解!!):@ModelAttribute
@Bean("person")
@Before
public Person createPerson(){
return new Person();
}
@RequestMapping(...)
public xxx handlePersonRequest( (@Autowired @Qualifier("person") | @Bean("person")) Person person, xxx){
...
}
如您所见,Spring做出了正确的决定,即制作一个包罗万象的注释;没有人希望看到一个注释大杂烩。@ModelAttribute