Freemarker:方便地生成UUID

时间:2017-08-30 10:06:25

标签: java freemarker

在Freemarker中似乎没有方便的内置功能来在模板中生成随机UUID。

我能想到的最好的方法是创建一个Freemarker method;在我的Java 8代码中,我将注入方法以供以后在模板中使用。例如:

library()

在Freemarker模板中,我可以使用如下方法:

public String generate(Map<String, Object> data, String templateLocation) throws IOException, TemplateException {
    try (StringWriter writer = new StringWriter()) {
        Template template = configuration.getTemplate(templateLocation);
        // UUID generation method injected in this line:
        data.put("uuid", (TemplateMethodModelEx) (list) -> UUID.randomUUID());
        template.process(data, writer);
        return writer.toString();
    }
}

在Freemarker中生成uuids是否有更方便的解决方案?

这是我的Maven依赖:

${uuid()}

2 个答案:

答案 0 :(得分:3)

您可以使用statics在模板中致电randomUUID

${statics["java.util.UUID"].randomUUID()} 

答案 1 :(得分:2)

您可以使用Configuration.setSharedVariable(...)将该方法全局添加到配置中。