下面的代码无效,我收到错误。
<image>
<reportElement x="42" y="101" width="22" height="23"/>
<printWhenExpression>($F{booleanConditon} ? <![CDATA[$P{path} + "checkBox.png"]] : <![CDATA[$P{path} + "unCheckBox.png"]]>)</printWhenExpression>
</image>
错误信息是
Error loading the report template:
org.xml.sax.SAXParseException; lineNumber: 730; columnNumber: 22; cvc- complex-type.2.4.a: Invalid content was found starting with element 'printWhenExpression'. One of '{"http://jasperreports.sourceforge.net/jasperreports":box, "http://jasperreports.sourceforge.net/jasperreports":graphicElement, "http://jasperreports.sourceforge.net/jasperreports":imageExpression, "http://jasperreports.sourceforge.net/jasperreports":anchorNameExpression, "http://jasperreports.sourceforge.net/jasperreports":hyperlinkReferenceExpression, "http://jasperreports.sourceforge.net/jasperreports":hyperlinkWhenExpression, "http://jasperreports.sourceforge.net/jasperreports":hyperlinkAnchorExpression, "http://jasperreports.sourceforge.net/jasperreports":hyperlinkPageExpression, "http://jasperreports.sourceforge.net/jasperreports":hyperlinkTooltipExpression, "http://jasperreports.sourceforge.net/jasperreports":hyperlinkParameter}' is expected.
答案 0 :(得分:1)
使用图像表达,如下所示
示例:
<imageExpression><![CDATA[$V{PAGE_NUMBER}==1 ? "img/watermark_firstpage.png" : "img/watermark_otherpage.png"]]></imageExpression>
答案 1 :(得分:0)
您需要在<![CDATA[..code...]]>
内标记表达式的全部,以便xml解析器将其纯粹解释为文本数据,表达式的评估将由jasper报告引擎完成
<printWhenExpression><![CDATA[($F{booleanConditon} ? $P{path} + "checkBox.png" : $P{path} + "unCheckBox.png")]]></printWhenExpression>
因此评估过程,首先解析xml(sax解析器),然后解析你的表达式(jasper报告引擎)
答案 2 :(得分:0)
问题是您的XML无效。
元素printWhenExpression
不能是image
的直接子元素。它应该是reportElement
的孩子。
示例:
<image>
<reportElement x="42" y="101" width="22" height="23">
<printWhenExpression>($F{booleanConditon} ? <![CDATA[$P{path} + "checkBox.png"]] : <![CDATA[$P{path} + "unCheckBox.png"]]>)</printWhenExpression>
</reportElement>
</image>
答案 3 :(得分:0)
我遇到了同样的问题。解决方案如下:你可以拍一张照片 我有两个图像checked.png和unchecked.png。 我已经对数据库进行了查询并获取了字段'checkAsIsFlag'的值。该字段包含'Y'(已选中)或'N'(未选中)作为文本值。如果checkAsIsFlag ='Y',我将显示一个图像checked.png,如果checkAsIsFlag ='N',我将显示unchecked.png。
我将两个图像放在设计页面上一个在另一个上面(像素中的相同位置)。并在“打印表达式”字段中写入表达式,检查参考图像。
简短的源代码如下:
<image>
<reportElement x="30" y="7" width="25" height="25" uuid="afe9a678-28a4-40d2-bc61-82b49fb904d9">
<property name="com.jaspersoft.studio.unit.width" value="pixel"/>
<property name="com.jaspersoft.studio.unit.height" value="pixel"/>
<property name="com.jaspersoft.studio.unit.x" value="pixel"/>
<printWhenExpression><![CDATA[$F{checkasisflag}.equals("Y")]]></printWhenExpression>
</reportElement>
<imageExpression><![CDATA["http://localhost:8080/studentreport/images/checked.png"]]></imageExpression>
</image>
<image>
<reportElement x="30" y="7" width="25" height="25" uuid="a993026c-430e-4f56-9531-3baaa0de11f4">
<property name="com.jaspersoft.studio.unit.width" value="pixel"/>
<property name="com.jaspersoft.studio.unit.height" value="pixel"/>
<property name="com.jaspersoft.studio.unit.x" value="pixel"/>
<property name="com.jaspersoft.studio.unit.y" value="pixel"/>
<printWhenExpression><![CDATA[$F{checkasisflag}.equals("N")]]></printWhenExpression>
</reportElement>
<imageExpression><![CDATA["http://localhost:8080/studentreport/images/unchecked.png"]]></imageExpression>
</image>