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>