在jasper报告中,我使用JSON数据源。 该数据源包含数字(例如159.994)。
有一个类java.lang.double
的字段(我们称之为“doubleField”)和一个带有此字段和模式("#,##0.00 ¤ (brutto)"
)的文本字段。
该模式工作正常(德国货币格式),但如果我打印出doubleField的值,预期输出将是“195,99”或“159.994”。
但实际上它是"159.994,00"
或"159994.0"
。
有一个解决方案将报告的语言从“groovy”改为“JavaScript”,但这没有用,也不适用。
有一个“快速和肮脏”的解决方案(没有快速)只是将JSON值作为String,然后将其转换为文本字段中的double。这样可以正常工作,但它很脏而且不是很快。
有什么想法吗?
答案 0 :(得分:0)
我有一个Jasper报告定义。我只是从报告定义中加入了一些我认为可能与您的问题相关的内容。
首先,我有几个字段定义。以下是其中两个:
<field name="FundFixedBeginningBalance" class="java.lang.Double">
<fieldDescription>
<![CDATA[FundFixedBeginningBalance/FundFixedBeginningBalanceValue]]>
</fieldDescription>
</field>
<field name="FundNonFixedBeginningBalance" class="java.lang.Double">
<fieldDescription>
<![CDATA[FundNonFixedBeginningBalance/FundNonFixedBeginningBalanceValue]]>
</fieldDescription>
</field>
注意两者是如何用class="java.lang.Double"
定义的。我正在使用XPath表达式,因为我的数据是XML格式,但这与JSON没有根本的不同。稍后,在报告布局部分中我有:
<textField pattern="#,##0.00 ;(#,##0.00)" isBlankWhenNull="true">
<reportElement positionType="Float" x="368" y="52" width="100" height="14" uuid="deac984d-39b8-49f4-b4d2-28e66681c098">
<property name="local_mesure_unitx" value="pixel"/>
<property name="com.jaspersoft.studio.unit.x" value="px"/>
</reportElement>
<textElement textAlignment="Right"/>
<textFieldExpression><![CDATA[$F{FundFixedBeginningBalance} + $F{FundNonFixedBeginningBalance}]]></textFieldExpression>
</textField>
注意textFieldExpression
元素中没有强制转换;只需用$F
替换这两个字段并将它们加在一起(这样就可以正确打印)。你在做些不同的事吗?