2012-03-20 117 views
2

在我的速度模板中,我一直使用Velocity NumberTool将数字变量格式化为货币。 其中大部分是原始双打,他们使用这个工具很好。格式化Apache Velocity中的BigDecimal

但是,有些是BigDecimal类型的,它们似乎根本没有被格式化。这将只显示表达式是渲染时:

$global.numberTool.currency($someBigDecimalVariable) 

是否有格式化BigDecimal与Velocity作为货币的便利方式?有什么选择?

回答

1

既然你可以把任何物体进入速度范围内,最容易做的事情是把自己的DecimalFormat对象在上下文并在模板中调用它的format()方法。

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

+0

但你必须牢记的一点是'DecimalFormat'不是线程安全的。这可能相关,也可能不相关,但很重要。 – biziclop 2012-06-27 17:52:07

0

你可以在Velocity中使用JSTL吗?我用FMT JSTL标签显示BigDecimals的是这样一个货币:

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

+1

我似乎记得Velocity不允许JSTL,但它已经有一段时间了。 – madth3 2012-03-21 01:18:37

+0

我完全没有Velocity的经验,因为他要求替代方案,我认为这可能有帮助。 – 2012-03-21 01:22:15