Начало работы с jasperReport/iReport с Grails

Я хочу создать отчет для экземпляров класса домена, но не для всех, а только для тех, которые пользователь выбрал в таблице GSP (установив флажки). В моем отчете у меня также будет некоторая логика - несколько условий, некоторые вычисления и т. д. Мне также нужно будет получить некоторые дополнительные данные из базы данных. Как мне это сделать? Должен ли я получить значения выбранных флажков в контроллере и передать его контроллеру jasper? Что-то вроде этого:

ВСП:

 <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-запроса и параметров. Моя логика заключалась в том, что если я передам карту экземпляров домена контроллеру jasper, как я сделал в приведенном выше примере, мне не нужно указывать источник данных в отчете. Но получаю пустой отчет.

Я также попытался установить источник данных отчета в свою базу данных и запрос отчета: выберите * из книги, где $ X {IN, id, books}. В этом случае независимо от того, что я выберу, отчет создается для всех экземпляров книги.


person drago    schedule 27.03.2012    source источник


Ответы (1)


Ты пытался...

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

... оставляя строку SQL пустой в вашем .jrxml?

person Rob    schedule 05.07.2013