2013-02-16 47 views
0

因此,我創建了一個在grails上使用groovy的簡單CRUD應用程序,並且我想使用jasper報告插件來獲取關於數據庫的一些簡單報告。我已經設置了一個簡單的G:select來從下拉列表中選擇,然後點擊PDF圖標,我正在帶回一個空白頁面。 GSP低於無法將可變參數傳遞給碧玉報告

<div id="page-body" role="main"> 
<p>Please select one of the following options</p> 
<div> 
<g:select optionKey="id" 
optionValue="artist" 
name="artist" 
id="MusicCatalogue" 
value="${artist}" 
from="${multicatalogue.MusicCatalogue.list()}"> 
</g:select> 
</div> 
<div> <g:jasperReport jasper="report1" format="PDF" name="Music Catalogue" /> 
<input type="hidden" name="artist" value="${artist}" /> 
</div> 
</div> 

然後JRXML看起來像下面

<parameter name="artist" isForPrompting="true" class="java.lang.String"> 
    <defaultValueExpression><![CDATA["<parameter error>"]]></defaultValueExpression> 
    </parameter> 
    <queryString language="SQL"> 
     <![CDATA[SELECT * 
    FROM 
    MusicCatalogue where ARTIST = $P{artist}]]> 
    </queryString> 
    <field name="ID" class="java.lang.Integer"/> 
    <field name="ALBUM" class="java.lang.String"/> 
    <field name="ARTIST" class="java.lang.String"/> 
    <field name="TRACK" class="java.lang.String"/> 
    <group name="ARTIST"> 

想法????

回答

0

嘗試更換

<g:jasperReport jasper="report1" format="PDF" name="Music Catalogue" /> 
<input type="hidden" name="artist" value="${artist}" /> 

隨着

<g:jasperReport jasper="report1" format="PDF" name="Music Catalogue"> 
<input type="hidden" name="artist" value="${artist}" /> 
</g:jasperReport> 

同時,確保${artist}返回一個字符串值,否則報告將使用artist參數可能會毀了你的查詢的默認值。

+0

我恐怕沒有工作,你是什麼意思「另外,請確保$ {artist}返回一個字符串值」select有一系列的字符串,但我不知道如何將它們傳遞給碧玉報告。 – user1854751 2013-02-18 22:09:28

+0

你的問題是你得到一個空白頁的權利。我說也許你的隱藏文本字段的價值是'$ {artist}'不是你想要的值,這就是爲什麼你得到一個空白頁面(因爲你在報告的查詢中使用它)。因爲在傳遞參數給jasperreport方面,我認爲你的代碼是有效的。 – Bnrdo 2013-02-19 01:37:37

+0

在哪一點是我的g:實際選擇問題在於它沒有通過所需的參數?我認爲我的問題是我無法真正傳遞任何東西。該選擇顯示爲一個下拉消息,但重要的是,即使我創建一個提交按鈕,實際上並沒有捕獲任何值。 – user1854751 2013-02-19 10:31:28