Kus*_*ain 3 image jasper-reports
我使用的是 JasperReports 6.2.2 版本。如果值为 null 或空,我想隐藏图像。
下面的代码我在 jrxml 中使用来隐藏图像,但这对我不起作用。
<image>
<reportElement x="33" y="0" width="88" height="45" uuid="182b40f8-b18e-417c-b9f4-096199533567">
<printWhenExpression><![CDATA[($F{urlImage}!=null ? $F{urlImage} : "")]]></printWhenExpression>
</reportElement>
</image>
Run Code Online (Sandbox Code Playgroud)
$F{urlImage} 是 String 类型
它给出了一个错误
ERROR [btpool0-2] (JRFillSubreport.java:866) - Fill 1: exception
[java] java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean
[java] at net.sf.jasperreports.engine.fill.JRFillElement.evaluatePrintWhenExpression(JRFillElement.java:806)
[java] at net.sf.jasperreports.engine.fill.JRFillImage.evaluate(JRFillImage.java:471)
[java] at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:381)
[java] at net.sf.jasperreports.engine.fill.JRFillFrame.evaluate(JRFillFrame.java:159)
[java] at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:381)
[java] at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:500)
[java] at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2022)
[java] at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:748)
[java] at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:255)
[java] java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean
[java] at net.sf.jasperreports.engine.fill.JRFillElement.evaluatePrintWhenExpression(JRFillElement.java:806)
[java] at net.sf.jasperreports.engine.fill.JRFillImage.evaluate(JRFillImage.java:471)
[java] at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:381)
[java] at net.sf.jasperreports.engine.fill.JRFillFrame.evaluate(JRFillFrame.java:159)
[java] at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:381)
[java] at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:500)
[java] at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2022)
[java] at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:748)
[java] at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:255)
[java] at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:115)
[java] at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:580)
[java] at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:414)
[java] at net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:736)
[java] at net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:59)
[java] at net.sf.jasperreports.engine.fill.AbstractThreadSubreportRunner.run(AbstractThreadSubreportRunner.java:221)
[java] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
[java] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
[java] at java.lang.Thread.run(Unknown Source)
[java] at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:115)
[java] at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:580)
[java] at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:414)
[java] at net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:736)
[java] at net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:59)
[java] at net.sf.jasperreports.engine.fill.AbstractThreadSubreportRunner.run(AbstractThreadSubreportRunner.java:221)
[java] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
[java] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
[java] at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
如果图像的值为 null 或空,如何隐藏图像。urlImage 字段包含图像的 url。例如:“[ http://use.example.com/pop.png][1] ”。
小智 6
您可以在 Jaspersoft Studio 中执行此操作:
这会在 jrxml 中创建以下行:
<image isUsingCache="true" onErrorType="Blank">