Javalin 模板引擎
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
工件包括几个模板引擎的默认实现:
- Freemarker ➜ https://freemarker.apache.org
- jte ➜ https://jte.gg/
- mustache ➜ https://github.com/spullara/mustache.java
- pebbletemplates ➜ https://pebbletemplates.io/
- thymeleaf ➜ https://www.thymeleaf.org/
- velocity ➜ https://velocity.apache.org/
- Commonmark ➜ https://github.com/commonmark/commonmark-java
使用插件
所有模板引擎都会在 中查找模板/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
最后编辑:Jeebiz 更新时间:2025-05-04 01:10