【问题标题】:Loading a file from a parameter in Jasper从 Jasper 中的参数加载文件
【发布时间】:2015-11-19 15:53:02
【问题描述】:

我是编写 jasper 报告(以及一般的 SQL)的新手。我们正在尝试加载 RTF 或 HTML 文件作为报告末尾的披露。我们这样做的方式是在 SQL 的一部分中选择文件的名称(“披露”):

SELECT
....
'Disclosure' as Disclosure
FROM
...

然后,显然,有一个字段:

<field name="Disclosure" class="java.lang.String"/>

最后,在报告的摘要部分,我们使用 loadfile 实用程序:

<textFieldExpression   class="java.lang.String"><![CDATA[JasperFileRuntimeUtility.loadFile($F{Disclosure}, $P{REPORT_PARAMETERS_MAP})]]></textFieldExpression>

如果报告返回数据,这很好用。但是,如果原始查询的结果没有返回任何记录,则报告中不包含披露(因为查询的结果显然是什么)。

我认为我们可以通过提供“披露”作为参数来轻松解决这个问题,但是当我将其更改为 $P 而不是 $F 时。我收到有关无效 io 文件类型的错误。

我还尝试创建一个变量并将 $V 设置为我们传入的 $P 的值,但也没有运气。

是否有一种加载文件类型的实用程序可以加载参数,就像我们对字段所做的那样?还有其他建议吗?

感谢帮助!!!

【问题讨论】:

    标签: jasper-reports


    【解决方案1】:

    我现在更好地理解了你的问题,所以我编辑了答案,你在打电话

    JasperFileRuntimeUtility.loadFile($F{Disclosure}, $P{REPORT_PARAMETERS_MAP})
    

    你不知道这是什么函数,但你知道如果你传递字符串“Disclosure”它就可以工作。

    JasperFileRuntimeUtility 类在您的库中(它不是官方的 jasper 报告功能),请尝试搜索您的项目或库。

    它有一个静态方法public static String loadFile(String value, Map&lt;?,?&gt; map)

    使用 where $F{Disclosure} = "Disclosure" 调用方法

    JasperFileRuntimeUtility.loadFile($F{Disclosure}, $P{REPORT_PARAMETERS_MAP})
    

    JasperFileRuntimeUtility.loadFile("Disclosure", $P{REPORT_PARAMETERS_MAP})
    

    不会有任何不同,结果将是相同的(因为该方法没有其他想法,那么您调用它的参数是什么)。

    通常也使用 $P{Disclosure} = "Disclosure" 调用

    JasperFileRuntimeUtility.loadFile($P{Disclosure}, $P{REPORT_PARAMETERS_MAP})
    

    会是一样的,但是由于传递了参数映射,所以函数可以看到这个参数并且可能做其他事情......

    但更有可能的是,由于参数映射被传递给函数,您可能有 scriptlet 或其他设置 static 字段的调用,并且当您没有结果时,对 loadFile 的调用不起作用,因为这些静态字段尚未设置。

    因此,如果通过“披露”无法正常工作,那肯定是这种情况..

    玩得开心!

    【讨论】:

    • 所以我们目前正在做的是使用 SQL 查询将字符串“Disclosure”传递到“Disclosure”字段中......然后报告使用该 loadFile 函数加载名为“披露”。我实际上并不了解它是如何工作的以及为什么它知道文件扩展名.. 但它确实并且它在摘要中加载了我们的公开.html 文件。但是..不幸的是..当查询本身没有返回任何记录时,它没有将“披露”字符串传递给“披露”字段..所以 loadFile 不起作用。
    • 更好地理解你的问题我已经编辑了我的答案,如果你在你的类中找到 JasperFileRuntimeUtility 类,请告诉我......
    • 太棒了!太感谢了。我不知道为什么我没有看到这个,但这绝对是答案。我用直接的“披露”字符串替换了 $F 值。呃。非常感谢!
    猜你喜欢
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多