2

私のページには複数選択があります。ユーザーは、要素をリストに追加したり、1 つまたは複数を選択して削除したりできます。

params.selectName を介して選択の値を取得すると、選択された値のみを受け取ります。これがデフォルトの動作であることは理解していますが、選択した要素だけでなく、それらすべてが必要です。

サーバーにデータを送信するたびにすべての要素を選択したくありません。誰かがより良い解決策を持っていますか? ありがとう。

4

2 に答える 2

0

このタグが採用するアプローチ<g:checkBox>は、チェックボックスと同じ名前で先頭にアンダースコアを追加した隠しフィールドを作成することです。ここで同様のトリックを使用できます。つまり、に新しいフィールドを追加するたびに、同じ値を持つ(たとえば) という名前の非表示フィールドも追加し<option>ます。次に、コントローラーでとの差をとって、リストから選択されていないオプションを取得できます。<select>selectName_optionsparams.list('selectName')params.list('selectName_options')

于 2012-11-14T16:33:22.850 に答える
0

これは、単純な問題に対する少し複雑な解決策ですが、私の現在のプロジェクトでは、同じ問題があり、@cdeszaq が説明するように解決しました。

クラス のオブジェクトがアイテムFooのコレクション ( bars) を持ち、それぞれが を持ち、それを表現として出力すると仮定すると、 でこれを行います。BarBarString nametoString()FooController

def removedItems = fooInstance.bars.findAll {
    !params.bars.collect { it.key }.contains(it.name)
}

if(removedItems){
    removedItems.each {
        fooInstance.removeFromBars(it)
    }
}
于 2012-11-14T16:24:40.133 に答える