防止Birt转换数字

时间:2017-05-18 11:52:29

标签: birt

我有一个Birt报告,其数据集有一个类型为" Java Object"的计算列。此列将其作为Java对象从周围应用程序输入,然后使用此精确对象计算内容。

计算列的表达式:

var result;
try {
    result = application.getValueFromApplication(row["id"]);
} catch (err) {
    Packages.java.lang.System.out.println("Error getting value " + row["id"] + ": " + err);
    result = null;
}

然而......似乎有一个错误,Birt将这些值转换为JavaScript值。在最好的情况下,这是愚蠢的,但数字更糟糕。因为 所有 号码都转换为相同的愚蠢JavaScript"数字"类型。是的,即使是BigDecimalLong

因此,在上面的示例中,getValueFromApplication()返回BigDecimal,而结果是Javascript number

当开始计算的时候,所有这些值都在内部转换回Double,现在计算失败,因为它要求值是应用程序提供报告的值。

所以某处有这个片段:

application.doMagic(row["value"]);

Birt试图强迫它Double沿着方法的喉咙向下,即使它在开头有BigDecimal

如何防止Birt盲目地将数字转换为某些JavaScript blob而不是使用具体的Java类?

0 个答案:

没有答案