grails バージョン 2.4.0 とJasperReportsプラグイン: 1.9.0 (バージョン jasper-1.10.0-SNAPSHOT も試しました) を使用していますが、pdf にエクスポートするとエラーが発生しました。
プロジェクトを初めて開始したときにエクスポート レポートを実行すると、このメッセージが表示されました
org.apache.commons.collections.map.ReferenceMap
その後、再試行すると、このエラーが表示されます。
Could not initialize class net.sf.jasperreports.engine.xml.JRXmlDigesterFactory
2.2.4で動作するのでバージョン2.4.0と競合しそうです
ここに私のコード
コントローラ内
def results = new ArrayList()
def reportFolder = "${grailsApplication.parentContext.getResource('reports').file.absolutePath}"
def sep = System.getProperty('file.separator')
def app = Applicant.get(2)
results.add(
first: app.firstName,
middle: app?.middleInitial,
last: app.lastName,
ssn: app.ssn,
workPhone: app.workPhone,
homePhone: app.homePhone
)
reportService.exportPDFReport("${reportFolder}${sep}aaa.jrxml", results, params, response)
サービス中 (サービス名は reportService であることに注意してください)
def exportPDFReport(String reportPath, results, params, response) {
def temp_file = File.createTempFile("jasperReport", ".pdf")
def jrDataSource = new JRMapCollectionDataSource(results)
JasperReport jReport = JasperCompileManager.compileReport(reportPath)
JasperPrint print = JasperFillManager.fillReport(jReport, params, jrDataSource)
JasperExportManager.exportReportToPdfFile(print, temp_file.absolutePath)
response.setContentType("application/force-download")
response.setHeader("Content-Transfer-Encoding", "binary")
response.setHeader("Content-disposition", "attachment; filename=${jReport.name}.pdf")
response.outputStream << temp_file.newInputStream()
temp_file.deleteOnExit()
}
何か案は?