在 freemarker 中格式化 Duration 对象的好方法是什么?

问题描述 投票:0回答:1

我有一个 java Duration 对象,其格式应为 xml 中的

hh:mm:ss

<Duration>${duration}</Duration>

但它是用标准格式渲染的。

<Duration>PT30S</Duration>

我在java中有一个可以格式化持续时间的方法,它目前用于json映射。

    public static String format(Duration value) {
        long hours = value.toHours();
        int minutes = value.toMinutesPart();
        int seconds = value.toSecondsPart();
        int millis = value.toMillisPart();
        return millis == 0
            ? String.format("%02d:%02d:%02d", hours, minutes, seconds)
            : String.format("%02d:%02d:%02d.%03d", hours, minutes, seconds, millis);
    }

我还需要在 freemarker 中渲染 Duration。是否可以在 freemarker 中使用相同的方法?

java freemarker
1个回答
0
投票

从 FreeMarker 2.3.32 开始,任何 Java 8 时态类都没有内置格式。 (虽然有一个开发分支具有半完成的实现,但甚至还没有解决

Duration
。)

但是,您当然可以从 FreeMarker 调用静态实用方法。您必须将其值放入数据模型(模板上下文)中,并使用您喜欢的名称(如本例中的

MyUtils
((BeansWrapper) cfg.getObjectWrapper()).getStaticModels().get(MyUtils.class.getName())
,其中
cfg
是 FreeMarker
Configuration
单例。

© www.soinside.com 2019 - 2024. All rights reserved.