当前位置: 首页 > 知识库问答 >
问题:

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

班昱
2023-03-14

我想用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个答案

刘升
2023-03-14

不同选项:

>

  • 将groovy类编译到jar中,并将jar作为库添加到jasper项目中。对函数的调用如下:Example.GetName()

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

    如果您从groovy环境(而不是从studio)运行报告,则可以将包含groovyfiles(class)的文件夹作为类路径添加到groovy-engine类加载器。因此,可以使用动态groovy文件编译。

  •  类似资料:
    • 问题内容: 我面临一个问题,我有两个文件。然后,我想加入一个文件,但每个文件都加入一页。 我看到了下面的一些技巧,但我不知道他们是最好的,因为我的第一个文件有3个波段:,和。第二个有和。 所以我想尽可能保留这种格式,因为摘要中有分页计数器。 我已经尝试过了,但是我的第二页是空白的,高度为5厘米。 列表页=新的ArrayList <>(); 那我该怎么办? 问题答案: 要将多个JRXML添加到一个报

    • 如何在useEffect中使用自定义方法??如果我创建了许多组件,它们使用相同的fetch函数,我应该在每个组件的效果中声明fetch函数吗??这个函数做同样的工作?? 据我所知,如果我想在use效应中使用组件的状态,我应该声明并调用use效应中的函数,就像例子1一样。 但是我想声明其他js文件的函数。因为它被称为其他组件。 根据Dan Abramov(https://overreacted.io

    • 我想在任何目录的任何脚本中导入自定义编写的函数,就像在任何脚本中导入请求模块一样。我正在运行Ubuntu和Python 3.9 编辑:我按照本教程完成了我的要求-https://packaging.python.org/tutorials/packaging-projects/

    • 假设我想有一个方法,它是获得超级主要客户,它有。 其中声明了方法。 然后我的公开存储库界面变成以下内容: 它扩展了和my。 我写的 bot不知道,在实现中写什么。如何接触客户?

    • 我尝试了ReportNG,但它现在没有更新报告&我发现这个答案不再使用ReportNG。我想创建一个测试报告/定制TestNG报告给开发团队。我使用混合框架创建项目,并遵循本教程。

    • 问题内容: 因此,JSON.stringify提供了一种转换JS对象的好方法: 输入JSON字符串,例如: 它使用一个可选的第二个参数来执行此操作,该参数控制应序列化哪些字段: 很好,但是有一个问题。假设您的“ baz”实际上是另一个对象的属性,并且您想要序列化另一个对象: 好吧,通常您只需要在baz上定义一个toJSON方法,例如: 现在,正如我前面提到的,我们已经有了完美的逻辑来“ toJSO