3

我想在 freemarker 文件中显示 2 个数字:

  • 基准long id

  • 基准long timeSpend

id 应该使用默认NumberFormat实例,但 timeSpend 应该使用我的MillisecondsSpendNumberFormat实例,所以我在输出中得到如下内容:

  • ID:1 234 567

  • 花费时间:1min 23sec 456ms

如何将我的NumberFormat实例用于 1 个long实例,但不能用于所有实例?

4

2 回答 2

4

您可以将格式化程序实例提供给 Freemarker 模板(将其添加到包含传递给模板的对象的模型中),然后显式调用其 format() 方法来格式化数字。

就像是

timeSpend: ${myCustomFormatter.format(timeSpend)}
于 2012-05-14T09:34:29.230 回答
1

您可以${someNumber?string("somePattern")}在单个场合使用非默认格式。但你真正的问题是 FreeMarker 总是使用DecimalFormat数字格式,你只能指定模式。所以你根本不能使用MillisecondsSpendNumberFormat,除非你手动调用它。您可以通过将一个MillisecondsSpendNumberFormat实例放入数据模型并从模板中调用它的 Java API 来TemplateMethodModelEx做到这一点,或者通过实现一个在内部进行格式化的方法,然后将其拉入一些常用的#include-d/ #import-d 文件中<#assign formatTimeSpent = "com.example.MyTimeSpentFormatter"?new()>,然后使用${formatTimeSpent(someNumber)}in模板。

于 2012-05-15T07:01:17.473 回答