我在客戶端需要顯示像身份證的報告的web項目一直在努力。我在Illustrator中設計了報告的結構並將其導出爲SVG,因此BatikRenderer處理該文件並在報告中顯示它。並在iReport只包括我要展示的領域。所以基本上它在iReport Designer 5.5.0中有效。與SVG文件中的iReport的工作給予JRExpressionEvalException:評估表達式錯誤:源文本
當我編譯它並顯示預覽。好像一切都好。
這裏是我的JRXML:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="prueba" whenNoDataType="AllSectionsNoDetail" language="groovy" pageWidth="180" pageHeight="288" columnWidth="180" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="2cedbacf-8972-4cbe-bf07-7d3af62126d5">
<detail>
<band height="288" splitType="Stretch">
<image>
<reportElement x="0" y="0" width="180" height="288" uuid="3c8031c1-70ca-4e47-be8e-735b90b7797a"/>
<imageExpression class="net.sf.jasperreports.engine.JRRenderable"><![CDATA[net.sf.jasperreports.renderers.BatikRenderer.getInstanceFromLocation("svg-design.svg")]]></imageExpression>
</image>
</band>
</detail>
</jasperReport>
我用其他的變化與絕對路徑和它的作品太:
<![CDATA[net.sf.jasperreports.renderers.BatikRenderer.getInstance(new java.io.File("/Users/RogelioMonge/Dropbox/Adepafut/src/java/com/adepafut/common/reports/svg-design.svg"))]]>
問題是,當我嘗試執行來自我的應用程序的報告。我使用空數據源的報告,僅用於SVG測試,我需要首先實現這一點,這樣我才能繼續使用DataSource填充報告。
這裏是我用來測試報告啞代碼:
try {
Map<String, Object> parameters = new HashMap<String, Object>();
JRDataSource dataSource = null;
InputStream report = this.getClass().getClassLoader().getResourceAsStream(JugadorReportEnum.PATH_REPORT.getValue());
JasperPrint jasperPrint = JasperFillManager.fillReport(report, parameters, dataSource);
JasperViewer jv = new JasperViewer(jasperPrint, false);
jv.viewReport(jasperPrint, false);
} catch (JRException ex) {
Logger.getLogger(ReportHandler.class.getName()).log(Level.SEVERE, null, ex);
}
這裏是例外:
ex = (net.sf.jasperreports.engine.fill.JRExpressionEvalException)net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
Source text : net.sf.jasperreports.renderers.BatikRenderer.getInstanceFromLocation("svg-design.svg")