2011-12-07 1 views
2

私は自分のアプリケーションでgrails generate-allを使用しました。 5、私は5複数選択番組(合計15冊のうち15冊所有している既存のAuthor編集した場合、選択なしでマルチセレクトを処理する

<g:select multiple="true" ... /> 

しかし:AuthorビューはBookインスタンス数を可能にする複数選択を持っていますすべての書籍を選択解除して保存をクリックすると、Authorはまだ5冊の本を保持しています。私が言うことから、Authorという書物の本からの本の入力は変更されません。

今、私は私のコントローラ(このようなもの)でこれをテストすることができます

if (params?.books.size() < 1) { 
    authorInstance.books = [] 
} 

が、これはそれを行うための方法である、またはより良い方法はありますか?

答えて

3

私が使用することを見てきたほとんどの例:

authorInstance.books.clear() 
0

私はparamsマップは値を持つフィールドが含まれていないとして、マルチ選択リストは、デフォルトのバインディングデータで空にすることができないという、同じ問題を抱えていましたNULLです。

はこれを回避するために、あなたはあなたの .gspでこれを行うことができます:あなたは、このフォーム要素を投稿すると

<g:hiddenField name="books" value="" /> 
<g:select multiple="true" name="books" /> 

は、マルチ選択は隠しフィールドを上書きします。マルチ選択が空の場合、空の文字列にフォールバックします。

コントローラーの操作を変更できない場合は、きれいではありませんが、ジョブを完了してください。

関連する問題