【问题标题】:Formatting a BigDecimal in Apache Velocity在 Apache Velocity 中格式化 BigDecimal
【发布时间】:2012-03-20 22:48:21
【问题描述】:

在我的速度模板中,我一直在使用 Velocity NumberTool 将数字变量格式化为货币。 其中大部分是原始双打,并且可以在此工具上正常使用。

但是,有些是 BigDecimal 类型,它们似乎根本没有格式化。它只会在渲染时按原样显示表达式:

$global.numberTool.currency($someBigDecimalVariable)

有没有一种方便的方法来格式化 BigDecimal 与 Velocity 作为货币?有哪些替代方案?

【问题讨论】:

    标签: java currency velocity bigdecimal


    【解决方案1】:

    由于您可以将任何对象放入 Velocity 上下文中,因此最简单的做法是将您自己的 DecimalFormat 对象放入您的上下文中并在模板中调用其 format() 方法。

    当然,这不是一个很好的解决方案,但您可以对其进行改进以使其更通用。

    【讨论】:

    • 您必须记住的一件事是DecimalFormat 不是线程安全的。这可能相关也可能不相关,但最好注意一下。
    【解决方案2】:

    你可以在 Velocity 中使用 JSTL 吗?我使用 fmt JSTL 标签将 BigDecimals 显示为这样的货币:

    <fmt:formatNumber value="${myBigDecimalValue}" type="currency" currencySymbol="€" currencyCode="EUR" minFractionDigits="2" maxFractionDigits="2"/>

    【讨论】:

    • 我好像记得 Velocity 不允许 JSTL,但是已经有一段时间了。
    • 我完全没有 Velocity 方面的经验,因为他要求替代方案,我认为这可能会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 2016-10-28
    • 1970-01-01
    • 2013-06-21
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多