Я хочу создать отчет для экземпляров класса домена, но не для всех, а только для тех, которые пользователь выбрал в таблице 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}. В этом случае независимо от того, что я выберу, отчет создается для всех экземпляров книги.