在jrxml中访问/导入用户定义的类

Nay*_*ayn 3 import jasper-reports

有人试图在jasper报告(.jrxml文件)中导入用户定义的类吗?我想在我的jasper报告中使用一些(用户定义的)Util类来烹饪一些bean属性.我正在使用Javabean数据源

如果您需要进一步说明,请与我们联系.

导入类的语法是

<import value="java.util.HashMap"/>
Run Code Online (Sandbox Code Playgroud)

我想用

<import value="mypackage.MyUtil" />
 ....
 ....
<field name="myVar" class="java.lang.String">
    <fieldDescription><![CDATA[MyUtil.cook(myData)]]>
    </fieldDescription>
</field>
Run Code Online (Sandbox Code Playgroud)

MyUtil.java的简单定义可能是

package mypackage;
public class MyUtil
{
    public static String cook(String data)
    {
        return data + "_cooked";
    }
}
Run Code Online (Sandbox Code Playgroud)

Nay*_*ayn 6

我想在问这个问题之前我应该​​充分尝试过.

除了jrxml中有两个部分之外没有什么需要:1.从javabean源定义字段2.使用步骤1中定义的字段填充详细信息带中的值

我甚至在用它们创建字段之前就试图烹饪javabean成员的价值所以,jasper试图将这个'表达式'解析为javabean成员.

以下是错误的

<field name="myVar" class="java.lang.String">
     <fieldDescription><![CDATA[MyUtil.cook(myData)]]>
     </fieldDescription>
</field>
Run Code Online (Sandbox Code Playgroud)

当我在字段值上使用Util类时,它工作正常.

<textField>
    <reportElement x="200" y="0" width="100" height="13"/>
    <textElement/>
    <textFieldExpression class="java.lang.String">
         <![CDATA[MyUtil.cook($F{myVar})]]>
    </textFieldExpression>
</textField>
Run Code Online (Sandbox Code Playgroud)

谢谢Nayn