簡単そうに見えてなかなか難しい。(有限で既知の長さの) 一連のチェックボックスを grails コマンド オブジェクトのブール値のリストにバインドします。もちろん、以前に選択した値を使用して、ビューを復元するコマンド オブジェクトを「入力」することも可能です。
たとえば、grails webflow があります。ブール値リストのエントリに 4 つのチェックボックスをバインドすることから始めます。次の状態に切り替わり、[true,true] などの値を出力します。戻ると、すべてのチェックボックスが空になります (これは完全に理にかなっています - 4 つのチェックボックスと 2 つの値のみ)。したがって、むしろ [false, true, false, true] のようにする必要があります。
私が何をしても、これを実現することはできないようです。春なら簡単に、チェックボックスを value[0]..[3] にバインドするだけです... Grails ではなぜこれほど単純なことが難しいのでしょうか?!
助けてください、それは本当に私の一日になるでしょう!
コマンドオブジェクトの例:
class TestCmdObj {
List<Boolean> boolListOne = []
}
コントローラーでのバインディング メソッドの例 (フロー アクションで実行されるクロージャー):
private def doBindAndValidateBoolList = {
bindData(flow.testCmdObj, params, [include:['boolListOne']])
}
ここまでは順調ですね。これは、フローの次のページを表示するときに実際に機能します.testCmdObj.boolListOneは、チェックされたチェックボックスに対してtrueを表示します..
GSP コードは単純で、以下を使用します。
<g:checkBox name="boolListOne"/>
<g:checkBox name="boolListOne"/>
<g:checkBox name="boolListOne"/>
<g:checkBox name="boolListOne"/>
次のビューでは、${testCmdObj.boolListOne} を出力できます。チェックした値と同じ数の「真」の値が出力されます ([true, true] など)。戻ると、チェックボックスは空です。 .. 繰り返しになりますが、それらはすべて同じ名前を持っているため、理解できます...