ドメイン クラス インスタンスのレポートを作成したいのですが、すべてではなく、ユーザーが GSP テーブルで選択したもの (チェックボックスを選択したもの) だけを作成したいと考えています。私のレポートには、いくつかのロジックもあります-いくつかの条件、いくつかの計算などです。データベースから追加のデータを取得する必要もあります。どうすればいいですか?コントローラーで選択したチェックボックスの値を取得し、ジャスパー コントローラーに渡す必要がありますか? このようなもの:
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 コントローラーに渡す場合、レポートでデータ ソースを指定する必要がないというものでした。しかし、空のレポートが表示されます。
また、レポート データソースをデータベースに設定し、レポート クエリを次のように設定しようとしました: select * from book where $X{IN,id,books}. その場合、何を選択しても、すべての本のインスタンスに対してレポートが作成されます。