Jasper reports JasperReports中变量、参数和字段之间的区别是什么?

Jasper reports JasperReports中变量、参数和字段之间的区别是什么?,jasper-reports,Jasper Reports,我是JasperReports的新手,一直在制作一些小样本。“字段”、“参数”和“变量”似乎非常常用于演示动态数据,看起来非常相似。那么我能问一下他们在JasperReports中的具体区别吗 我猜变量是在Jasper报告中定义的,可以动态更改。参数是从外部源(Java..等)获取的,字段是实体(数据库模式、类实体),但我认为我的理解是不正确的。根据我个人使用JasperReports的经验,我可以推断您将最多使用参数和字段。参数和字段是可以从代码中填充的内存位置或值,即在生成报告时 您通常要做

我是JasperReports的新手,一直在制作一些小样本。“字段”、“参数”和“变量”似乎非常常用于演示动态数据,看起来非常相似。那么我能问一下他们在JasperReports中的具体区别吗


我猜变量是在Jasper报告中定义的,可以动态更改。参数是从外部源(Java..等)获取的,字段是实体(数据库模式、类实体),但我认为我的理解是不正确的。

根据我个人使用JasperReports的经验,我可以推断您将最多使用参数和字段。参数和字段是可以从代码中填充的内存位置或值,即在生成报告时

您通常要做的是为报表填充一个或多个具有不同设置的参数映射。如果我有摘要页或封面(报告中的第一页),我会使用参数,例如:

parameters.put("authorName", author); //where authorName is a parameter you have created in your JRXML template.
接下来,您可能正在使用一些自定义的
“变量”
,或者您可能正在使用JasperReports提供的变量。其中一些有用的变量是:页码和页码。他们跟踪。。。报告页数和页码。当然,您可以使用自定义变量

字段用于数据频繁更改的位置。它们与参数非常相似,但随着每次迭代,数据可能会发生变化。类似地,一个字段可能是一个迭代的
germanCar
对象列表和下一个迭代的
japaneseCar
对象列表。我将使用一个字段来保存可能更改的
Car
对象列表

底线是参数和字段非常相似,但字段是从
JasperReportDataSource
填充的(因此在填充该数据源时,它们可能会频繁更改),而在生成报告本身时,将用于封面或自定义JR设置的参数。他们可能会很困惑


希望这有点帮助

参数是JasperReports的简单输入。在使用之前,必须在JasperReport中定义参数。可以显示变量的值,可以将其用作布尔表达式的一部分,甚至可以将其传递给子报表。这可以是SQL查询的输入

字段是简单的变量定义。您可以将这些视为传递到报表的数据源对象的实例变量,或者如果数据源是映射,则它们可以是键名称。如果将JasperReport配置为基于SQL创建数据集,则字段是结果集的列名。您将使用字段显示已执行SQL查询的结果集


变量是Jasper Report中的另一种变量,它们不是输入。它们用于计算某些字段(定义见上文)的总和或平均值。您可以使用变量在字段上执行许多其他预定义的计算函数。

感谢您的精彩回答,还有一个问题是数据是否显示在列表中,它是否必须在字段中,或者说,在Java类型中,参数是基元类型,字段是用于集合的?通常,参数将包含一个具有值的对象,如字符串或基元类型。字段可能包含bean、对象等的集合。字段的数量可以是可变的吗?或者它们应该只是静态的?我的意思是,根据提供给报表的数据,报表是否可以有特定数量的字段?字段可以是列表对象。然后,不管您的列表中有多少元素(从应用程序传递),谢谢。我看到的所有示例都是将数据源的参数或结果作为字段传递到Jasper报告中,但是Java类实例呢?如果创建一个包含大量参数和两个字段列表的报表类,那么将整个实例或单独的元素传递给报表是否更好?哪个更好?非常感谢。我认为创建报告类是一个更好的方法。因为报表类可以抽象报表的表示形式,并且可以充当报表的数据模型。字段的数量可以是可变的吗?或者它们应该只是静态的?我的意思是,根据提供给报告的数据,报告是否可以有特定数量的字段?作为其他答案的补充,在这里,除其他外,还有相关章节讨论,以及。阅读可供下载的“iReport最终指南”的“第6章:字段、参数和变量”也可能有用(要下载,您必须注册)。