2012-03-27 50 views
2

我想爲我的域類實例創建一個報告,但不是全部,只是在GSP表中選擇的用戶(選中複選框)。在我的報告中,我也會有一些邏輯 - 很少的條件,一些計算等。我還需要從數據庫中獲得一些額外的數據。我該怎麼做呢?我應該在cotroller中獲取選中的複選框的值,並將它傳遞給jasper cotroller?事情是這樣的:從Grails開始jasperReport/iReport

GSP:

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

操作:

def bookReport = { 
    def bookList = [] 
    params.each { 
     if(it.key.startsWith("book_")){ 
      bookList.add((it.key - "book_") as Long) 
     } 
    } 

    def bookCriteria = Book.createCriteria() 
    def books = bookCriteria.list { 
     'in'('id',bookList) 
    } 
    chain(controller:'jasper', data:books, action:'index', params:params) 
} 

我用iReport的創建報告。我試過創建沒有SQL查詢和參數的報告。我的邏輯是,如果我將域實例的映射傳遞給碧玉控制器,就像我在上面的例子中所做的那樣,我不需要在報告中指定數據源。但我得到一個空的報告。

我也嘗試將報表數據源設置到我的數據庫並報告查詢:select * from book where $ X {IN,id,books}。在這種情況下,無論我選擇的報告是爲所有書籍實例創建的。

回答

0

您是否嘗試過...

chain(controller:'jasper', model:[data:books], action:'index', params:params) 

...同時使SQL字符串中的.jrxml爲空?