Javalin 渲染

该javalin-rendering构件是 Javalin Web 框架的一个可选模块,它提供了一种使用常用模板引擎渲染 HTML 的简便方法。该javalin-rendering构件包含多个模板引擎的默认实现,包括 JTE、Mustache、Velocity、Pebble、Handlebars 和 Thymeleaf,但您还需要添加要使用的模板引擎的依赖项。

添加依赖项

<dependency>
    <groupId>io.javalin</groupId>
    <artifactId>javalin-rendering</artifactId>
    <version>6.6.0</version>
</dependency>
<dependency>
    <groupId><!-- template engine group --></groupId>
    <artifactId><!-- template engine artifact --></artifactId>
    <version><!-- template engine version --></version>
</dependency>

包含模板引擎

javalin-rendering工件包括几个模板引擎的默认实现:

使用插件

所有模板引擎都会在 中查找模板/markdown 文件src/resources/templates。要启用模板引擎,必须在 Javalin 配置中注册它:

Javalin.create(config -> {
    config.fileRenderer(new JavalinMustache());
});

您还可以注册自己的渲染引擎。

渲染模板

一旦添加了要使用的模板引擎的依赖项,您所要做的就是ctx.render()使用模板文件(以及可选的模型)的路径进行调用:

ctx.render("/templateFile.ext", model("firstName", "John", "lastName", "Doe"));

配置模板引擎

如果您希望配置模板引擎(例如,为模板文件设置根目录),则所有构造函数都有带有模板引擎配置的可选参数:

Javalin.create(config -> {
    config.fileRenderer(new JavalinVelocity(myVelocityEngine));
});

配置类不是来自 Javalin,而是来自您正在使用的模板引擎,因此请查阅该特定模板引擎的文档以了解如何使用它们。

重新创建旧的 JavalinRenderer

旧版本的 Javalin 有一个JavalinRenderer用于渲染模板的类。该类能够根据文件扩展名渲染模板。

您可以像这样重新创建此类:

class JavalinRenderer implements FileRenderer {
    private Map<String, FileRenderer> renderers = new HashMap<>();
    public JavalinRenderer register(String extension, FileRenderer renderer) {
        renderers.put(extension, renderer);
        return this;
    }

    @Override
    public String render(String filePath, Map<String, ? extends Object> model, Context context) {
        String extension = filePath.substring(filePath.lastIndexOf(".") + 1);
        return renderers.get(extension).render(filePath, model, context);
    }
}

然后您可以像任何其他渲染器一样注册它:

Javalin.create(config -> {
    config.fileRenderer(
        new JavalinRenderer()
            .register("mustache", new JavalinMustache())
            .register("jte", new JavalinJte())
    );
});
作者:Jeebiz  创建时间:2025-05-04 01:04
最后编辑:Jeebiz  更新时间:2025-05-04 01:10