Jasper Reports - 如何将参数传递给 ResourceRenderer.getInstance()?
Jasper Reports - how to pass parameter to ResourceRenderer.getInstance()?
我有以下内容可以在我的报告中显示图像:
<parameter name="fundo" class="java.lang.String" isForPrompting="false"/>
<image>
<reportElement x="56" y="36" width="102" height="62" uuid="6473c069-834e-40ff-a3ac-52cb2a7b83c8"/>
<imageExpression><![CDATA[net.sf.jasperreports.renderers.ResourceRenderer.getInstance("$P{fundo}", false)]]></imageExpression>
</image>
我应该从 Java 传递给 "fundo" 什么参数?
Map<String, Object> parameters = new HashMap<>(2);
parameters.put("fundo", ??);
图像是 .svg 资源。
试过这个:
public static String getFundo() {
URL resource = ImageUtil.class.getClassLoader().getResource("fundo.svg");
if (resource == null) {
return null;
}
return resource.toExternalForm();
}
得到这个异常:
net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.JRException: Byte data not found at: ((java.lang.String)parameter_fundo.getValue()).
你应该把它读成字节,类似于
$P{fundo}.getBytes("UTF-8")
关心,穆罕默德
删除 $P{fundo}
两边的引号
如
<imageExpression><![CDATA[net.sf.jasperreports.renderers.ResourceRenderer.getInstance($P{fundo}, false)]]></imageExpression>
我有以下内容可以在我的报告中显示图像:
<parameter name="fundo" class="java.lang.String" isForPrompting="false"/>
<image>
<reportElement x="56" y="36" width="102" height="62" uuid="6473c069-834e-40ff-a3ac-52cb2a7b83c8"/>
<imageExpression><![CDATA[net.sf.jasperreports.renderers.ResourceRenderer.getInstance("$P{fundo}", false)]]></imageExpression>
</image>
我应该从 Java 传递给 "fundo" 什么参数?
Map<String, Object> parameters = new HashMap<>(2);
parameters.put("fundo", ??);
图像是 .svg 资源。
试过这个:
public static String getFundo() {
URL resource = ImageUtil.class.getClassLoader().getResource("fundo.svg");
if (resource == null) {
return null;
}
return resource.toExternalForm();
}
得到这个异常:
net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.JRException: Byte data not found at: ((java.lang.String)parameter_fundo.getValue()).
你应该把它读成字节,类似于
$P{fundo}.getBytes("UTF-8")
关心,穆罕默德
删除 $P{fundo}
如
<imageExpression><![CDATA[net.sf.jasperreports.renderers.ResourceRenderer.getInstance($P{fundo}, false)]]></imageExpression>