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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在报表中插入自定义Groovy方法?相关的知识,希望对你有一定的参考价值。

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

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

有任何想法吗 ?

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

Blank_Arch.Jamesx圆角:

<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. 将你的groovy类编译成jar,并将jar作为库添加到你的jasper项目中。调用函数将是这样的:Example.GetName()
  2. 在Jaspersoft Studio中,可以创建Functions Library https://community.jaspersoft.com/wiki/jaspersoft-studio-expression-editor-how-extend-it-and-contribute-your-own-functions-part-2
  3. 如果你从groovy环境(而不是从工作室)运行你的报告,可以添加带有groovy文件(类)的文件夹作为groovy引擎类加载器的类路径。因此可以使用动态groovy文件编译。

以上是关于如何在报表中插入自定义Groovy方法?的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段—— 数组的响应式方法

VSCode自定义代码片段10—— 数组的响应式方法

Groovy自定义 Xml 生成器 BuilderSupport ( nodeCompleted 方法获取节点闭合信息 )

Visual Studio 自定义代码片段在方法定义的参数列表中不起作用

如何在 Toad for Oracle 中使用自定义代码片段?

如何在片段着色器中进行自定义模板测试