1

通常,我在以下过程中使用@modelattribute 注释将表单值绑定到 bean。

在jsp中

<form:form commandname="test" ../>

在java类中

@modelattribute("test")
public Test commandobject()
{
return new test();
}

最近我遇到了一个片段,他们在jsp中使用modelattribute代替commandname,并且他们没有创建任何创建对象的方法。由于更改注释,所有这些是否都会由框架处理?请对此有所了解。

4

1 回答 1

3

当您@ModelAttribute使用方法时,如您的示例中那样,它向 Spring 指示如果该类在模型中不存在,它应该创建一个并将其放在那里。它允许您在模型对象中使用默认值。如果将其与@SessionAttributes控制器上的注解结合起来,它将扩展此功能,以确保一旦控制器被击中,对象就会被放入 Session 中。

标签上的属性commandName和属性主要做同样的事情,就是将表单的字段映射到控制器中某种类型的对象。我相信这是首选方法,并且仅用于向后兼容。modelAttributeform:formmodelAttributecommandName

于 2013-06-11T19:19:53.390 回答