2013-02-16 76 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