我想通過以下方式使用命令對象:命令對象的數據綁定
class BeneficiaryCommand {
List<Beneficiary> tempBeneficiaries = org.apache.commons.collections.list.LazyList.decorate(new ArrayList(), new org.apache.commons.collections.functors.InstantiateFactory(Beneficiary.class))
static constraints = {
tempBeneficiaries(validator: {
it.each{println it.beneficiary} // it.beneficiary is null, but I expect it to have name and address from the form
})
}
}
class Beneficiary {
Contractor beneficiary // Contractor has name and address properties, both non-blank and non-nullable
Boolean save
}
普惠制的樣子:
<tr class="prop">
<td valign="top" class="name">
<label for="beneficiaries"><g:message code="contract.beneficiaries.label" default="New Beneficiary Name" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: i, field: 'name', 'errors')}">
<g:textField name="tempBeneficiaries[0].name" />
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="beneficiaries"><g:message code="contract.beneficiaries.label" default="New Beneficiary Address" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: i, field: 'address', 'errors')}">
<g:textField name="tempBeneficiaries[0].address" />
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
</td>
<td valign="top" class="value ${hasErrors(bean: beneficiaryCommand, field: 'save', 'errors')}">
<div id="newBeneficiaryFlagDisplay"><g:checkBox name="tempBeneficiaries[0].save" /> Create new Beneficiary</div>
</td>
</tr>
命令對象的save
屬性(由代表複選框)綁定到命令對象,但name
和address
不是。我也嘗試將文本字段名稱重命名爲tempBeneficiaries.beneficiary[0].name
無濟於事。
關於如何將name
和address
捕獲到命令對象的任何想法?
看來,'Beneficiary'類中的'Contractor'實例不實例化(對象是'null'並試圖'的println beneficiary.class'給'例外:null' – zoran119