2012-03-26 5 views
3

で選択したチェックボックスのリストを取得すると、これは私がテーブルに持っているものです。テーブル

<td><g:checkBox name="book_${bookInstance.id}"/> </td> 

そして、これは私が選択したインスタンスを取得しようとする方法である:

params.each{ 
      if(it.key.startsWith("book_")) 
       books << (it.key - "book_") as Integer 
     } 

私は空のリストを取得しています。これを修正するには?私はあなたに良い解決策があるかどうかについての提案を受けています。

答えて

5

入力ボックスの名前はすべて同じで、値は異なるものを作成してみてください。

<g:each in="${books}" var="bookInstance"> 
    <g:checkBox name="books" value="${bookInstance.id}"/> 
</g:each> 

は、その後、あなたのコントローラであなたは介して選択された書籍IDのリストを取得することができます。

params.list('books') 
+0

を私はこれを試してみたし、それは動作しません。私はまったく同じことをして、私は空のリストを取得します。それがうまくいっても、選択したものだけでなく、すべてのインスタンスを返すことが期待されます。いくつかの助け/明確化は素晴らしいでしょう。 – drago

+0

私は問題を推測しています(またはリストの一部)は、g:jasperReportタグで定義されているパラメータだけを渡して、でフォームを送信しています。 – drago

3

私の答えは間違いなく後半の質問はしばらく前に頼まれたのであります。とにかく私も同様の問題を解決しました。これを試してください。

<td><g:checkBox name="registerBook" value="${bookInstance.id}" checked="false"/> </td> 

選ば本のリストを取得するためのコントローラーコード:

def checkedBooks = params.list('registerBook') 
//get list of books. this will return only the selected books 
def selectedBooks = Book.getAll(checkedBooks) 

for(result in selectedBooks){ 
//now manipulate the result as you wish ... 
} 
関連する問題