通常,我在以下过程中使用@modelattribute注释将表单值绑定(bind)到bean。
在jsp中
<form:form commandname="test" ../>
在java类中
@modelattribute("test")
public Test commandobject()
{
return new test();
}
最近我遇到了一个片段,其中他们在 jsp 中使用 modelattribute 代替 commandname,并且他们没有创建任何用于创建对象的方法。由于更改注释,框架是否会处理所有这些?请对此进行一些说明。
最佳答案
当您将 @ModelAttribute
放在方法上时(如您的示例所示),它向 Spring 指示,如果模型中不存在该类,则应创建一个并将其放在那里。它允许您在模型对象中拥有默认值。如果将其与 Controller 上的 @SessionAttributes
注释结合起来,它将扩展此功能以确保在 Controller 被击中时将对象放入 session 中。
form:form
标记上的属性 commandName
和 modelAttribute
主要执行相同的操作,即将表单的字段映射到 Controller 中某种类型的对象。我相信 modelAttribute
是首选方法,而 commandName
只是为了向后兼容。
关于java - jsp的form标签中modelattribute的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17051579/