我正在使用JasperReports,HTML作为导出格式。问题是,在我的Java类中,我使用包含“:
”字符的String值设置参数,当我单击按钮生成报告时,包含“:
”的字段角色,改变其位置并显示在其他地方,如果我删除“:
”,它就可以正常工作。
一些输入
:
”替换为“\u003a
”仍然没有运气:
”替换为“:
”,这样可以“:
”而不是“:
”<detail>
<band height="15">
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement x="600" y="0" width="120" height="15"/>
<textElement textAlignment="Left"/>
<textFieldExpression><![CDATA[$F{supervisorName}]]>
</textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement x="532" y="0" width="65" height="15"/>
<textElement textAlignment="Left"/>
<textFieldExpression><![CDATA[$F{leaveTime}]]>
</textFieldExpression>
</textField>
</band>
</detail>
答案 0 :(得分:1)
基本思路是:JasperReports将$ F {leaveTime}的任何价值放入报告中。这可能包括不是HTML友好的字符。这是合理的,因为JR不知道您是否将导出到Excel或PDF或HTML或其他内容。您将“:
”替换为“\u003a
”的想法在概念上是正确的......但其细节并不完全正确。你需要HTML转义,而不是UTF-8转义。
我认为在这个特定情况下你需要:
。
更一般地说,您应该使用为转义HTML字符串而构建的库。我推荐使用Apache Commons Lang。这样,您可以将$F{leaveTime}
替换为StringEscapeUtils.escapeHtml($F{leaveTime})
。