Начиная с jasperReport / iReport с помощью Grails - PullRequest
2 голосов
/ 27 марта 2012

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

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

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

1 Ответ

0 голосов
/ 05 июля 2013

Вы пробовали ...

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

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

...