如何在报表中插入自定义Groovy方法?

时间:2018-01-03 13:13:47

标签: groovy jasper-reports

我想用jaspersoft studio创建一个非常简单的jasper报告。我想使用groovy函数只返回一个字符串,该字符串将包含在我的报告中。

问题是我真的不知道如何将groovy文件与jrxml文件链接起来。

有什么想法吗?

以下是代码,您会注意到我尝试调用GetName()函数:

Blank_A4.jrxml文件:

<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Blank_A4" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="033445e4-caf8-491f-baf8-453af181b515">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="79" splitType="Stretch">
            <textField>
                <reportElement x="220" y="20" width="100" height="30" uuid="7af5e6b8-02c1-4a18-b40c-f2dd1bc90268"/>
                <textFieldExpression><![CDATA[GetName()]]></textFieldExpression>
            </textField>
        </band>
    </title> ...

Blank_A4.groovy文件:

class Example {
   static def GetName() {
      return "Hello";
   } 

   static void main(String[] args) {
      GetName();
   } 
} 

这两个文件位于我项目的同一文件夹中。

1 个答案:

答案 0 :(得分:0)

不同的选择:

  1. 将你的groovy类编译成jar,并将jar作为库添加到你的jasper项目中。调用函数将是这样的:Example.GetName()

  2. 在Jaspersoft Studio中
  3. 可以创建Functions Library https://community.jaspersoft.com/wiki/jaspersoft-studio-expression-editor-how-extend-it-and-contribute-your-own-functions-part-2

  4. 如果您从groovy环境(而不是从工作室)运行报表,则可以将具有groovy文件(类)的文件夹添加为groovy引擎类加载器的类路径。因此可以使用动态groovy文件编译。