使用单个 JSON 对象填充 Thymeleaf 模板

Filling Thymeleaf template with a single JSON object

提问人:Eve__BC 提问时间:11/14/2023 更新时间:11/14/2023 访问量:26

问:

我正在寻找 Freemarker 的更好替代品,目前正在尝试使用 Thymeleaf。 我正在使用 JAVA,主要想渲染模板并在以后将它们转换为 PDF(FTL ->HTML -> PDF)。

我在互联网上找到了这段代码:

    ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
    resolver.setTemplateMode(TemplateMode.HTML);
    resolver.setCharacterEncoding("UTF-8");
    resolver.setPrefix("/templates/");
    resolver.setSuffix(".html");

    Context context = new Context();
    context.setVariable("name", "Bunny");
    context.setVariable("date", LocalDate.now().toString());
    
    TemplateEngine templateEngine = new TemplateEngine();
    templateEngine.setTemplateResolver(resolver);
    
    String result = templateEngine.process("index", context);
    System.out.println(result);

问题是我在一个JSON对象中拥有数据。有没有办法将它们作为一个JSON对象传递给框架来处理它们,而不是从json对象中逐个读取它们并将它们填充到Context对象中?

我用Freemarker就是这样做的:

    JsonObject data = new JsonObject().put("name", "Bunny").put("dob", "01.01.1980");
    engine.render(data, template, renderResult -> {
        if (renderResult.succeeded()) {
            htmlToPdf(renderResult.result().toString(), baseDirectory, pdfResult -> {
                if (pdfResult.succeeded()) {
                    System.out.println("succeeded");
            });
        }
        else {
            System.out.println("failed");
        }
    });

对于我的用例,有没有比 Freemarker 或 Thymeleaf 更好的选择?

我在互联网上搜索了一下,发现大多数时候 Thymeleaf 都与 Spring boot 一起使用。我想在我自己的项目中没有任何框架的情况下使用它。

java json thymeleaf 渲染 freemarker

评论

0赞 Metroids 11/16/2023
您可以将整个 JSON 对象添加到上下文中,就像使用 freemarker 一样...不太确定这有什么问题?

答: 暂无答案