Написание методов в отчете о яшме?

Я создаю отчет о яшме. В этом я хочу написать один метод, который принимает целое число, выполняет некоторый процесс и возвращает строку. Я не знаю, как писать методы в отчете о яшме. Можно ли писать? Может ли кто-нибудь помочь мне в это

Я использую 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}» возвращает целое число. Я хочу передать это одному методу, и этот тип возвращаемого значения метода должен быть строкой.

Спасибо


person DonX    schedule 24.09.2009    source источник


Ответы (2)


Напишите вспомогательный класс Java со статическим методом, который будет получать целочисленный аргумент и возвращать желаемый результат:

package com.yourname.reports.util;

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

Добавьте этот класс в путь к классам, используемый для компиляции шаблона jasperreports и для среды выполнения. В iReport щелкните правой кнопкой мыши заголовок отчета в представлении «Инспектор отчетов» и выберите «Свойства». Прокрутите вниз до «Импорт» и добавьте свой класс:

com.yourname.reports.util.JrUtils

Добавьте класс Java импорта в свой отчет и вызовите статический метод из поля, используя:

<![CDATA["Transformed int: " + JrUtils.intFormatter($F{intValue}) ]>
person Boris Pavlović    schedule 24.09.2009

Ответ @Boris Pavlović хорош, но я думаю, что он упускает одну маленькую мысль - 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 вашего проекта, который содержит объявленный вспомогательный класс следующим образом:

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