在jasper报告中编写方法?

时间:2009-09-24 08:50:58

标签: java jasper-reports

我正在创建一个jasper报告。在那里我想编写一个接受整数并进行一些处理并返回一个字符串的方法。我不知道如何在jasper report中编写方法。是否可以编写?可以任何一个帮帮我吧

我正在使用iReport3.6.0。

示例代码:

 <textField>
  <reportElement x="400" y="10" width="80" height="15"/>
  <textElement textAlignment="Left" verticalAlignment="Middle"/>
  <textFieldExpression     class="java.lang.String">
               <![CDATA[$F{intValue}]]>
  </textFieldExpression>
 </textField>

在上面的代码中,“$ F {intValue}”返回integer。我希望将它传递给一个方法,并且方法返回类型想要成为字符串。

由于

2 个答案:

答案 0 :(得分:16)

使用静态方法编写一个辅助Java类,该方法将接收整数参数并返回所需的结果:

package com.yourname.reports.util;

public class JrUtils {
  public static String intFormatter(int arg) {
    return "Beautified int: " + arg;
  }
}

将此类添加到用于编译jasperreports模板和运行时的类路径中。在iReport中,右键单击“报表检查器”视图中的报表标题,然后选择“属性”。向下滚动到“Imports”并添加您的班级:

com.yourname.reports.util.JrUtils

将import Java类添加到报表中,并使用以下命令从字段调用静态方法:

<![CDATA["Transformed int: " + JrUtils.intFormatter($F{intValue}) ]>

答案 1 :(得分:1)

@BorisPavlović回答很好,但我认为它错过了一点思考 - classpath 。因此,如果您在编译时遇到错误,请执行以下操作:

net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file: 
Only a type can be imported. com.core.report.Util resolves to a package import com.core.report.Util; 

. Util cannot be resolved value = (java.lang.String)(Util.doit(((java.sql.Timestamp)field_time.getValue())));

你必须添加 * .jar of you project ,其中包含声明的助手类,如下所示:

> In You iReport Designer go to Tool -> Options -> iReport -> Classpath -> 
and press button "Add JAR" and select You project's jar.