我想在 freemarker 文件中显示 2 个数字:
基准
long id
基准
long timeSpend
id 应该使用默认NumberFormat
实例,但 timeSpend 应该使用我的MillisecondsSpendNumberFormat
实例,所以我在输出中得到如下内容:
ID:
1 234 567
花费时间:
1min 23sec 456ms
如何将我的NumberFormat
实例用于 1 个long
实例,但不能用于所有实例?
我想在 freemarker 文件中显示 2 个数字:
基准long id
基准long timeSpend
id 应该使用默认NumberFormat
实例,但 timeSpend 应该使用我的MillisecondsSpendNumberFormat
实例,所以我在输出中得到如下内容:
ID:1 234 567
花费时间:1min 23sec 456ms
如何将我的NumberFormat
实例用于 1 个long
实例,但不能用于所有实例?
您可以将格式化程序实例提供给 Freemarker 模板(将其添加到包含传递给模板的对象的模型中),然后显式调用其 format() 方法来格式化数字。
就像是
timeSpend: ${myCustomFormatter.format(timeSpend)}
您可以${someNumber?string("somePattern")}
在单个场合使用非默认格式。但你真正的问题是 FreeMarker 总是使用DecimalFormat
数字格式,你只能指定模式。所以你根本不能使用MillisecondsSpendNumberFormat
,除非你手动调用它。您可以通过将一个MillisecondsSpendNumberFormat
实例放入数据模型并从模板中调用它的 Java API 来TemplateMethodModelEx
做到这一点,或者通过实现一个在内部进行格式化的方法,然后将其拉入一些常用的#include
-d/ #import
-d 文件中<#assign formatTimeSpent = "com.example.MyTimeSpentFormatter"?new()>
,然后使用${formatTimeSpent(someNumber)}
in模板。