java - BIRT:数字类型(格式) hell

标签 java localization locale birt

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/

相关文章:

java - ClassLoader.getSystemClassLoader() 与 obj.getClass().getClassLoader().getSystemClassLoader()

java - Apache Pig在AWS EMR Hadoop集群中无输出

android - 是否有相当于 "Android Localization Files Editor"的 android-studio?

java - NumberFormat.getCurrencyInstance() 不返回语言环境中国和法国的货币符号 (jdk-1.8)

java - GWT DatePicker 语言环境

java - 扩展 JBoss Data Virt ws 转换器以处理分页源

java - 如何查找文件中调用次数最多的时间段

android - 我想在我的 Android 应用程序中显示区域语言 (Gurmukhi)

xaml - 在 UWP 中更改语言不会更改系统功能语言 - 仅在应用重新启动时

C:将数字转换为无区域设置的字符串的可移植/安全(线程感知)方法是什么?