深色模式
执行模板引擎
上下文对象准备就绪后,我们即可让模板引擎根据模板名称,结合该上下文处理模板,并传入响应输出流的 Writer 对象,将处理结果写入响应:
java
templateEngine.process("home", ctx, writer);我们来看使用西班牙语环境(Spanish locale) 处理后的输出结果:
html
<!DOCTYPE html>
<html>
<head>
<title>Good Thymes Virtual Grocery</title>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
<link rel="stylesheet" type="text/css" media="all" href="/gtvg/css/gtvg.css" />
</head>
<body>
<p>¡Bienvenido a nuestra tienda de comestibles!</p>
</body>
</html>核心代码解释
- templateEngine.process 方法参数:
- 第一个参数
"home":模板名称,结合模板解析器的prefix(/WEB-INF/templates/)和suffix(.html),最终定位到/WEB-INF/templates/home.html; - 第二个参数
ctx:上下文对象,提供模板渲染所需的Locale(西班牙语)和变量数据; - 第三个参数
writer:响应的输出流对象,模板引擎将渲染后的 HTML 直接写入该流,最终返回给客户端。
- 第一个参数
- 渲染结果的关键变化:
th:text="#{home.welcome}"被替换为西班牙语文本¡Bienvenido a nuestra tienda de comestibles!;th:href="@{/css/gtvg.css}"被解析为绝对路径/gtvg/css/gtvg.css(自动拼接应用上下文路径gtvg);- 所有 Thymeleaf 专属属性(
th:*)都被移除,输出纯标准 HTML,确保浏览器可正常解析。
总结
templateEngine.process()是触发模板渲染的核心方法,需传入模板名、上下文、输出流三个核心参数。- 模板引擎处理后会移除所有 Thymeleaf 语法,输出纯标准 HTML,同时根据上下文的 Locale 渲染对应语言的文本。
- URL 表达式
@{/css/gtvg.css}会自动拼接应用上下文路径,避免硬编码路径导致的部署问题。
