通常,我使用@modelattribute批注在以下过程中将表单值绑定到bean。
在jsp中
<form:form commandname="test" ../>
在java类
中@modelattribute("test")
public Test commandobject()
{
return new test();
}
最近我遇到了一个片段,他们在jsp中使用modelattribute代替commandname,他们没有创建任何创建对象的方法。由于更改注释,所有这些都会由框架来处理吗?请详细说明一下。
答案 0 :(得分:1)
当你在一个方法上放置@ModelAttribute
时,就像在你的例子中一样,它向Spring表明如果模型中不存在该类,它应该创建一个并将其放在那里。它允许您在模型对象中具有默认值。如果您将它与Controller上的@SessionAttributes
注释结合在一起,它将扩展此功能以确保在控制器被命中时对象将被置于Session中。
commandName
标记上的属性modelAttribute
和form:form
主要执行相同的操作,即将表单的字段映射到Controller中某种类型的Object。我相信modelAttribute
是首选方法,commandName
仅用于向后兼容。