2013-03-27 56 views
0

我有一個簡單的Jasper報告和一個使用jasper插件生成報告的Grails應用程序。該報告具有一個默認值的參數。說,它的名字是user_id當我打印報告時,使用默認值,結果是好的。Grails JasperService:如何將參數傳遞給報表?

現在我希望能夠將我自己的參數值傳遞給報告。下面是我用得到我的報告的代碼:

import org.codehaus.groovy.grails.plugins.jasper.JasperExportFormat 
import org.codehaus.groovy.grails.plugins.jasper.JasperReportDef 
... 
{ 
    // def user_id = 1 
    def reportDef = new JasperReportDef(name:'iResume.jasper', fileFormat:JasperExportFormat.DOCX_FORMAT) 
    def file = jasperService.generateReport(reportDef).toByteArray() 
} 

我如何通過設置了一個param,例如user_id到報告?

回答

0

終於與此代碼做到這一點:

params.put("_file", "iResume.jasper") 
    params.put("_format", "DOCX") 
    params.put("user_id", 1) 

    println params 

    def reportDef = jasperService.buildReportDefinition(params, request.getLocale(), []) 
    def file = jasperService.generateReport(reportDef).toByteArray() 

我把這個從碧玉Taglib和控制器代碼。這是一種巫術編程,因爲我不知道最後一個參數[]是什麼,但它的工作原理。如果有人能夠澄清這裏發生的事情,將不勝感激。

+0

貌似最後一個參數是模型地圖http://svn.codehaus.org/grails-plugins/grails-jasper/tags/RELEASE_1_1_1/grails-app/services/org/codehaus/groovy/grails/plugins/碧玉/ JasperService.groovy – rimero 2013-03-28 16:20:13