Freemarker:方便的生成UUID
Freemarker: generate UUID conveniently
似乎没有方便的内置 Freemarker 来在模板中生成随机 UUID。
我能想到的最好办法是创建一个 Freemarker method;在我的 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();
}
}
在 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.
您可以使用 Configuration.setSharedVariable(...)
将该方法添加到全局配置中。
你可以像这样在配置 freemarker 上设置 UUID.randomUUID() 的值
public freemarker.template.Configuration configuration() throws TemplateModelException {
freemarker.template.Configuration cfg = new freemarker.template.Configuration(freemarker.template.Configuration.VERSION_2_3_24);
cfg.setDirectoryForTemplateLoading(new File("path/of/freemarker/template"));
cfg.setDefaultEncoding("UTF-8");
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
cfg.setLogTemplateExceptions(false);
cfg.setSharedVariable("UUID", UUID.randomUUID());
return cfg;
}
在模板中你可以使用这个
"var":"${UUID}"
注意:您可以在配置 freemarker 和模板时将“UUID”更改为其他值。
似乎没有方便的内置 Freemarker 来在模板中生成随机 UUID。
我能想到的最好办法是创建一个 Freemarker method;在我的 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();
}
}
在 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.
您可以使用 Configuration.setSharedVariable(...)
将该方法添加到全局配置中。
你可以像这样在配置 freemarker 上设置 UUID.randomUUID() 的值
public freemarker.template.Configuration configuration() throws TemplateModelException {
freemarker.template.Configuration cfg = new freemarker.template.Configuration(freemarker.template.Configuration.VERSION_2_3_24);
cfg.setDirectoryForTemplateLoading(new File("path/of/freemarker/template"));
cfg.setDefaultEncoding("UTF-8");
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
cfg.setLogTemplateExceptions(false);
cfg.setSharedVariable("UUID", UUID.randomUUID());
return cfg;
}
在模板中你可以使用这个
"var":"${UUID}"
注意:您可以在配置 freemarker 和模板时将“UUID”更改为其他值。