を使用してアプリケーションに取り組んでいますgrails version 2.3.9
。そこで、チェックボックス付きのリストをレンダリングしています。ユーザーは任意の行を選択してページを送信できます。サーバー側では、コマンドオブジェクトを使用してデータをバインドしています。
私のコマンドオブジェクト--
@Validateable
class MyCO {
List<MyDoamin> myDomains = ListUtils.lazyList([], FactoryUtils.instantiateFactory(MyDoamin))
...
static constraints = {
myDomains nullable: false, validator: { val, obj ->
if (val.size() < 1) {
return "error.code"
}
}
...
}
}
意見 -
<g:each in="${myDomains}" var="myDomain" status="idx">
<tr>
<td>
<input type="checkbox" name="myDomains[${idx}].id" value="${myDomain.id}" checked>
</td>
...
</tr>
</g:each>
アクション -
def myAction(MyCO myCO) {
if (myCO.validate()) {
...
} else {
log.error "-----INVALID-----"
...
}
}
このコードは正常に動作しています。しかし、ユーザーがインデックス (idx) 値が 255 より大きい行を選択すると、データ バインディングは機能しません。
リクエスト パラメータ --
[myDomains[256].id:66、myDomains[256]:[id:66]、アクション:myAction、コントローラー:myController]
私も試してみました
List<MyDoamin> myDomains
と
List<MyDoamin> myDomains = [].withDefault { new Client() }
コマンドオブジェクトで、しかし同じ結果、データバインディングなし。
ここで何か間違ったことをしていますか?どうすればこれを修正できますか?