Jasper reports iReport和Jasper服务器中的不同数字格式

Jasper reports iReport和Jasper服务器中的不同数字格式,jasper-reports,ireport,jasperserver,Jasper Reports,Ireport,Jasperserver,我在iReport中创建了报告,其中是文本字段,格式为: new DecimalFormat("#,##0.00").format($F{NUMBER}) + " €" 在iReport中,结果是1234,56欧元,这是可以的。我在斯洛伐克,这是这里的普通格式。 Jasper服务器中的结果是1234.56欧元,这不正常 其他问题:斯洛伐克仍然有斯洛伐克王冠。可以把它定为欧元吗 你能帮我把什么放在哪里吗 谢谢如果您硬编码格式以使用逗号作为千位分隔符,iReport不可能忽略这一点。听起来你好像没

我在iReport中创建了报告,其中是文本字段,格式为:

new DecimalFormat("#,##0.00").format($F{NUMBER}) + " €"
在iReport中,结果是1234,56欧元,这是可以的。我在斯洛伐克,这是这里的普通格式。 Jasper服务器中的结果是1234.56欧元,这不正常

其他问题:斯洛伐克仍然有斯洛伐克王冠。可以把它定为欧元吗

你能帮我把什么放在哪里吗


谢谢

如果您硬编码格式以使用逗号作为千位分隔符,iReport不可能忽略这一点。听起来你好像没做你想做的事

但您可能需要将JasperReports服务器设置为使用不同的语言环境。您可以编辑此文件:

WEB-INF/applicationContext-security.xml
您将找到区域设置部分。添加您对斯洛伐克的需求。然后您可以在登录页面上选择此区域设置

或者,在Tomcat的启动脚本或您正在使用的任何应用程序服务器中设置区域设置可能会有所帮助。这些Java参数可能会解决您的问题,当然您不会希望我们。。。但这些是参数:

java -Duser.language=en -Duser.region=US

如果将格式硬编码为使用逗号作为千位分隔符,则iReport不可能忽略这一点。听起来你好像没做你想做的事

但您可能需要将JasperReports服务器设置为使用不同的语言环境。您可以编辑此文件:

WEB-INF/applicationContext-security.xml
您将找到区域设置部分。添加您对斯洛伐克的需求。然后您可以在登录页面上选择此区域设置

或者,在Tomcat的启动脚本或您正在使用的任何应用程序服务器中设置区域设置可能会有所帮助。这些Java参数可能会解决您的问题,当然您不会希望我们。。。但这些是参数:

java -Duser.language=en -Duser.region=US

我在我的一个客户机中部署了一个较旧版本的jasperserver,升级它会有点麻烦。我在iReport 4.1.1中也遇到了同样的问题。我的区域设置是pt_BR,我并不想更改我的服务器区域设置

我注意到iReport非常聪明或愚蠢,不会将class属性添加到textFieldExpression类中。我猜它是从变量/字段类型猜出来的。另一方面,Jasperserver至少我正在使用的版本,如果您没有为该表达式指定类,则不会将该模式应用于数字

换句话说:iReport生成此标记并按预期呈现:

<textField pattern="###,###,##0.00" isBlankWhenNull="true">
    <reportElement mode="Transparent" x="1293" y="0" width="92" height="20"/>
    <textElement textAlignment="Right" verticalAlignment="Middle">
        <font isBold="true"/>
    </textElement>
    <textFieldExpression><![CDATA[$V{my_var}]]></textFieldExpression>
</textField>
你可以假设我的变量是一个大十进制。该字段在服务器中无法正确呈现,因为它只是忽略模式,可能是因为它假定所有字段都是字符串?除非为textFieldExpression指定表达式类:

<textField pattern="###,###,##0.00" isBlankWhenNull="true">
    <reportElement mode="Transparent" x="1293" y="0" width="92" height="20"/>
    <textElement textAlignment="Right" verticalAlignment="Middle">
        <font isBold="true"/>
    </textElement>
    <textFieldExpression class="java.math.BigDecimal"><![CDATA[$V{my_var}]]></textFieldExpression>
</textField>

注意最后一行的class=java.math.BigDecimal。我不得不手动编辑jrxml文件,这很糟糕,但至少Jasperserver正确地呈现了我的报告。

我的一个客户端部署了一个较旧版本的Jasperserver,升级它会有点麻烦。我在iReport 4.1.1中也遇到了同样的问题。我的区域设置是pt_BR,我并不想更改我的服务器区域设置

我注意到iReport非常聪明或愚蠢,不会将class属性添加到textFieldExpression类中。我猜它是从变量/字段类型猜出来的。另一方面,Jasperserver至少我正在使用的版本,如果您没有为该表达式指定类,则不会将该模式应用于数字

换句话说:iReport生成此标记并按预期呈现:

<textField pattern="###,###,##0.00" isBlankWhenNull="true">
    <reportElement mode="Transparent" x="1293" y="0" width="92" height="20"/>
    <textElement textAlignment="Right" verticalAlignment="Middle">
        <font isBold="true"/>
    </textElement>
    <textFieldExpression><![CDATA[$V{my_var}]]></textFieldExpression>
</textField>
你可以假设我的变量是一个大十进制。该字段在服务器中无法正确呈现,因为它只是忽略模式,可能是因为它假定所有字段都是字符串?除非为textFieldExpression指定表达式类:

<textField pattern="###,###,##0.00" isBlankWhenNull="true">
    <reportElement mode="Transparent" x="1293" y="0" width="92" height="20"/>
    <textElement textAlignment="Right" verticalAlignment="Middle">
        <font isBold="true"/>
    </textElement>
    <textFieldExpression class="java.math.BigDecimal"><![CDATA[$V{my_var}]]></textFieldExpression>
</textField>

注意最后一行的class=java.math.BigDecimal。我不得不手动编辑jrxml文件,这很糟糕,但至少Jasperserver正确地呈现了我的报告。

该字段的java表达式类是java.math.BigDecimal吗?不是,但当我更改它时,它是相同的。在iReport OK中,在Jasper中是错误的。您的java表达式类是针对java.math.BigDecimal字段的吗?不是,但当我更改它时,它是相同的。在iReport中,好的,在Jasper中是错误的。谢谢,它帮助在Tomcat中设置了区域设置。谢谢,它帮助在Tomcat中设置了区域设置。