2

ドメイン クラス インスタンスのレポートを作成したいのですが、すべてではなく、ユーザーが 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}. その場合、何を選択しても、すべての本のインスタンスに対してレポートが作成されます。

4

1 に答える 1

0

やってみました...

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

....jrxml で SQL 文字列を空のままにしていませんか?

于 2013-07-05T06:37:35.377 に答える