您好我的.jrxml文件中的代码示例。
<staticText>
<reportElement x="69" y="10" width="422" height="180" uuid="52dc00c8-2cd3-466e-bc37-9dde8d5da625"/>
<textElement textAlignment="Justified" markup="html">
<font size="11"/>
<paragraph lineSpacing="1_1_2"/>
</textElement>
<text><![CDATA[I HAVE THINGS HERE]]></text>
</staticText>
在文本标签上,我想要一个来自Java类的字符串。我怎么做? 这是Java代码:
public static void main(String[] args) {
try {
JasperReport jasperReport = JasperCompileManager
.compileReport("src/main/resources/EJA1.jrxml");
Long now = new Date().getTime();
Map parameters = new HashMap();
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());
JasperExportManager.exportReportToPdfFile(jasperPrint,
"src/main/resources/reports/teste" + now.toString() + ".pdf");
} catch (JRException e) {
e.printStackTrace();
}
}
谢谢!
答案 0 :(得分:0)
<强>更新强>
感谢Alex K指出staticText
我的原始解决方案错误。
将您的元素从staticText
更改为textField
,然后在CDATA中将您的Java类名称保持为常量。像这样:
<![CDATA[Foo.Bar]]>
假设你有
public class Foo {
public final static String Bar = "bar";
...
例如,以下是我如何呈现来自Java类的字符串:
<pageHeader>
<band height="30" splitType="Prevent">
<frame>
<reportElement style="pageHeader" stretchType="RelativeToTallestObject" x="0" y="0" width="940" height="30"/>
<textField isStretchWithOverflow="true">
<reportElement style="pageSubHeaderText" stretchType="RelativeToTallestObject" x="0" y="0" width="940" height="30"/>
<textElement textAlignment="Left"/>
<textFieldExpression class="java.lang.String"><![CDATA[SomeHelper.someMethod()]]></textFieldExpression>
</textField>
</frame>
</band>
</pageHeader>