Java 在Freemarker中,如何为一行(而不是报告的其余部分)使用自定义的NumberFormat或DateFormat?

Java 在Freemarker中,如何为一行(而不是报告的其余部分)使用自定义的NumberFormat或DateFormat?,java,freemarker,Java,Freemarker,我想在freemarker文件中显示2个数字: 基准长id 基准longtimespend id应该使用默认的NumberFormat实例,但timeSpend应该使用my毫秒PendNumberFormat实例,因此我在输出中得到如下结果: id:1234567 时间开销:1分钟23秒456ms 如何将我的NumberFormat实例用于1long实例,但不能用于所有实例?您可以将格式化程序实例赋予Freemarker模板(将其添加到包含传递到模板的对象的模型中),然后显式调用其for

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

  • 基准
    长id

  • 基准
    longtimespend

id应该使用默认的
NumberFormat
实例,但timeSpend应该使用my
毫秒PendNumberFormat
实例,因此我在输出中得到如下结果:

  • id:
    1234567

  • 时间开销:
    1分钟23秒456ms


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

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

差不多

timeSpend: ${myCustomFormatter.format(timeSpend)}

您可以使用
${someNumber?字符串(“somePattern”)}
为单个场合使用非默认格式。但真正的问题是FreeMarker总是使用
DecimalFormat
进行数字格式设置,而您只能指定模式。因此,除非手动调用,否则根本不能使用
毫秒PendNumberFormat
。您可以通过将
毫秒PendNumberFormat
实例放入数据模型并从模板中调用其Java API来实现,也可以通过实现内部进行格式化的
TemplateMethodModelEx
,然后将其拉入一些常用的
#include
-d/
#导入带有
-d文件,然后在模板中使用
${formatTimePent(someNumber)}