Birt 支持 3 种数字/数字类型(例如数据集中的输出列):
整数
十进制
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 数字类型系统中的所有这些乱七八糟的事情?
最佳答案
在 BIRT API 中,它们具有此属性定义。
一般来说,如果你要检查源代码,在每个“属性”或“列”或“字段”或你称之为对象的任何东西中,只要它具有包含其数据类型的属性,你就会注意到该对象字段之一是数据类型的字符串名称。所以看起来API通过这个字符串字段来验证选择的数据类型。
例如,如果您在 DataSet 中创建一个输出列并选择小数作为其数据类型, 下拉列表中的显示名称实际上是 CamelCase,即“Decimal”,但 XML 名称是“decimal”。以编程方式执行此操作,您可以尝试
resultSetColumn.setDataType("Decimal");
因此,您可以通过同样的方式以编程方式验证其确切类型。
以下是 DataSet 列的常见数据类型列表。
http://www.eclipse.org/birt/ref/rom/structs/ResultSetColumn.html#Property-dataType
更新: 您可以使用 DesignChoiceConstant 的静态常量,它包括 BIRT 可用的数据类型。它还包括您可以用于其他 BIRT API 的属性名称和值,例如 css、标签、允许值列表等。
关于java - BIRT:数字类型(格式) hell ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11445818/