Freemarker:方便生成UUID

gil*_*des 3 java uuid freemarker

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

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

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

${uuid()}
Run Code Online (Sandbox Code Playgroud)

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

这是我的 Maven 依赖项:

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.25-incubating</version>
    <scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

use*_*900 5

您可以使用静态来调用randomUUID模板:

${statics["java.util.UUID"].randomUUID()} 
Run Code Online (Sandbox Code Playgroud)

如果该对象用作以类名作为键的散列,则该对象几乎公开任何类的静态方法。