1

我有一个控制器定义为:

public void saveCustomer(@Valid @ModelAttribute("customer") Customer customer) {
    // persist
}

和客户中的吸气剂:

public List<ContactInfo> getContactInfo() {
    if(contactInfo != null) {
        return contactInfo;
    }
    else {
        return new ArrayList<ContactInfo>();
    }
}

如果我使用 HTML 表单点击控制器,则联系信息为空。但是,如果我将吸气剂更改为

public List<ContactInfo> getContactInfo() {
    return contactInfo;
}

然后联系信息被绑定并正确保存。我真的很困惑为什么会这样。

我已经检查了 Chrome,并且联系信息肯定在请求参数中,如下所示:

contactInfo[0].alias:test
contactInfo[0].email:test@test.com
4

1 回答 1

3

如果您不制作contactInfonon- null,它将继续制作新的ArrayList

public List<ContactInfo> getContactInfo() {
    if(contactInfo == null) {
        contactInfo = new ArrayList<ContactInfo>();
    }

    return contactInfo;
}
于 2013-07-16T21:57:46.223 回答