2009-09-24 6 views
7

Je crée un rapport jasper.En ce que je veux écrire une méthode qui prend entier et fait un peu de processus et renvoie une chaîne.Je ne sais pas comment écrire des méthodes dans le rapport de jasper.Est-il possible d'écrire? moi dans ceÉcrire des méthodes dans le rapport jasper?

J'utilise iReport3.6.0.

Exemple de code:

<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> 

Dans le code ci-dessus "$ {F} intValue" retourne integer.I veulent passer que d'une méthode et que les méthodes de retour de type veut être une chaîne.

Merci

Répondre

14

écrire une classe Java aide avec une méthode statique qui va recevoir l'argument entier et retourner le résultat souhaité:

package com.yourname.reports.util; 

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

Ajouter cette classe à la classpath utilisée pour la compilation de modèle de JasperReports et pour la runtime. Dans iReport, cliquez avec le bouton droit de la souris sur le titre du rapport dans la vue "Report Inspector" et choisissez "Propriétés". Faites défiler jusqu'à « importations » et ajoutez votre classe:

com.yourname.reports.util.JrUtils 

Ajouter une classe d'importation Java à votre rapport et appeler la méthode statique du champ à l'aide:

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

Merci ... Fonctionne bien. .. – DonX

+0

vous êtes les bienvenus –

1

@Boris Pavlovic réponse est bonne, mais Je pense qu'il manque un peu de réflexion - classpath. Donc, si vous avez une erreur sur la compilation comme:

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()))); 

Vous devez ajouter * .jar Vous avez un projet qui contient déclaré classe d'aide comme suit:

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