Birt 支持 3 种数字/数字类型(例如,对于数据集中的输出列):
Integer
Decimal
Float
同时,BIRT 有唯一的 1(是的!一个!!!)数字的 css 内置格式。这意味着如果你有,例如 int(天)和 decimal(数量),你不能为它们使用内置的 css 样式(你已经定义了自己的并将它们应用于每个项目)。
走得更远。您从 BIRT 调用 Java 类并将所谓的Integer
值传递给它。你在 Java 中得到了什么?正确Double
。Integer
在我们最初拥有价值的那个水平上,现在是没有办法的。
当然,在某些情况下,您可以尝试根据值猜测数据类型。例如
public Object formatFromBirt(Object pObject){
if (pObject == null) return null;
...
if (pObject instanceof Double) {
// workaround for int as double (e.g. days in arrear in total)
LWDecimal dec = new LWDecimal((Double)pObject);
if (dec.getScale() == 0){
pObject = dec.getJavaDecimal().toBigInteger();
}
}
return formatObject(pObject);
}
我的大问题是 - 伙计们,你们如何处理 BIRT 号码类型系统中的所有这些乱七八糟的东西?