java - Freemarker:方便生成UUID

标签 java freemarker uuid

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

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

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 模板中,我可以使用如下方法:

${uuid()}

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

这是我的 Maven 依赖项:

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.25-incubating</version>
    <scope>test</scope>
</dependency>

最佳答案

您可以使用statics在模板中调用randomUUID:

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

This object exposes just about any class' static methods if it's used as a hash with class name as the key.

关于java - Freemarker:方便生成UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45957527/

相关文章:

java - MySQL JDBC 驱动程序未找到错误。在类路径中,已验证

java - 'Collections.sort(intervals, new Comparator<Interval>() { [...]'是什么意思?

java - 使用 UUID 为特定字符串生成唯一标识符是否安全(就唯一性而言)?

java - 将 Tomcat 7 升级到 64 位 JVM

java - 如何使 JAX-WS 对 SOAP 使用 https(http 到 https):address in generated wsdl

javascript - 如何在 freemarker 模板中追加字符串

freemarker - 确定列表或映射中是否存在字符串?

java - 加载用于发送电子邮件的 FreeMarker 模板

sql-server - 如何以特定格式创建唯一的序列号字符串?

java - 如何减少使用 randomUUID( ) 生成的 UUID 的长度