2012-03-26 86 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 2012-03-27 12:12:36

+0

我猜問題(或列表中的一部分)是我提交表單,只傳遞g:jasperReport標記中定義的參數。 – drago 2012-03-27 12:24:42

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 ... 
}