【问题标题】:Jasper Report IF condition in Text Field ValueJasper 报告文本字段值中的 IF 条件
【发布时间】:2020-05-27 17:43:23
【问题描述】:

使用文本字段值编辑器我将文本添加到带有条件的文本字段(注意 if 是使用 JasperSoft studio 的字段编辑器构造的,因此代码 IF(...) 是自动生成的,我只给出了值“ pippo”和“冥王星”)

"Some value" +IF(true,"pippo","pluto")

但它似乎不起作用。从我的代码调用报告时出现此错误:

net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file:
1. The method IF(boolean, String, String) is undefined for the type 

任何帮助将不胜感激

【问题讨论】:

  • 您在哪里(在 Java 代码或 Jaspersoft Studio)收到此错误?你的表达是绝对正确的,至少应该适用于 Groovy 语言(设置为报告)
  • 我在运行时尝试生成报告时遇到错误,表达式是在 JasperSoft Studio 中创建的,报告编译正常但没有正常执行。 @Alex 可能是重复的可能是这个(但我无法测试解决方案没有有效的 jar maven 工件涉及太多工作,所以我更改策略并使用我对解决方案的评论中报告的表达式)stackoverflow.com/questions/28243558/…
  • 尝试添加net.sf.jasperreports:jasperreports-functions神器
  • 谢谢@AlexK,我无法测试该建议,因为我使用了其他解决方案(答案中的那个),无论如何似乎是一个很好的解决方案,我无法在谷歌上找到这个工件。

标签: jasper-reports


【解决方案1】:

尝试使用ternary 运算符代替IF,如下所示

"Some value" + (value == true ? "pippo" : "pluto")

希望对你有所帮助。

【讨论】:

  • 缺少 == ,无论如何这可以节省我一小时的测试时间,这是一个正确的答案 此代码对我有用:($F{fieldInReport} == true ? "pippo" : "pluto")。 fieldInReport 是一个布尔字段(该死的显然我昨天测试了相同的代码但它没有工作:)!)。谢谢!
【解决方案2】:

您需要在构建文件中包含 jasperreports-functions。 例如:对于 gradle

implementation 'net.sf.jasperreports:jasperreports-functions:6.12.2'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多