1

次のように定義されたコントローラーがあります。

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

Customer のゲッター:

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

HTML フォームでコントローラをヒットすると、連絡先情報が null になります。しかし、ゲッターをに変更すると

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

次に、連絡先情報がバインドされ、正しく保持されます。なぜこれが起こっているのか、私は本当に混乱しています。

Chrome をチェックインしましたが、連絡先情報は次のようにリクエスト パラメータに間違いなく含まれています。

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

1 に答える 1