Spring - 具有2个modelAttributes的表单

时间:2014-05-29 22:05:30

标签: spring java-ee spring-mvc spring-security

我知道如何使用带有1个modelAttribute的表单但是如何在同一个表单中设置2个模型属性?

我有:

<sf:form id="details" action="/updateuser" method="POST" modelAttribute="updateuser">
    <sf:input type="text" name="firstName" path="firstName"/></br>
    <sf:input type="text" name="lastName" path="lastName" /></br>
    <sf:input type="text" name="email" path="email" /><sf:errors path="email" cssClass="error"></sf:errors> </br>

    <sf:input type="text" name="facebook" path="facebook" /> </br>
    <sf:input type="text" name="twitter" path="twitter" /> </br>
</sf:form>

firstName lastNameemail适用于modelAttribute="updateuser",但modelAttributefacebook twitter >

我该如何实现?

谢谢!

编辑: 没有包装类,是不是还有其他方法可以做到这一点?有关更多信息,我有:

class User {
    private String firstName;
    private String lastName;
    private String email;
}
class SocialMedia {
    private String facebook;
    private String twitter;
}

2 个答案:

答案 0 :(得分:1)

您无法将多个对象附加到<form>。但是,您可以为表单创建显式模型类并将其附加。

class UpdateUserFormModel {

  private Updateuser updateuser;

  private Facebook facebook;

  private Twitter twitter;

}

您可以使用.运算符

访问嵌套对象
<sf:input type="text" name="firstName" path="updateuser.firstName"/></br>
<sf:input type="text" name="facebook" path="facebook" /> </br>

答案 1 :(得分:0)

不能为一个表单设置多个模型属性,但您可以使用包装器来包装模型。

class Wrapper {
private Class1 c1;
private Class2 c2;
....
//getter&setters
}

但是,您可以使用

将多个对象绑定到同一个模型
model.addObject("objectName",object);

并通过

访问您网页中的对象
${objectName.name }