spring - 什么是 spring mvc Java 中的视图引擎以及它是如何工作的?
问题描述
我听说过“百里香叶”这个词作为视图引擎。但我不知道它在 Web 应用程序中的工作位置,请澄清这一点。
解决方案
它们通常被称为模板引擎,并提供将 Java 对象中包含的数据显示为动态生成的 HTML 的工具。
一个简单的例子,让你明白这意味着什么,你有@Controller
一个映射:
@GetMapping("/example")
public String getExample(Model model) {
List<ExampleDTO> list = exampleService.findAll();
model.addAttribute("list", list);
return "list-all";
}
ExampleDTO.java
有两个字符串属性“name”和“label”。你有一个这样的 HTML 模板 ( list-all.html
):
...
<div th:each="item : ${list}">
Name: <span th:text="${item.name}"></span><br>
Label: <span th:text="${item.label}"></span>
</div>
...
这里th:each
和th:text
都由 Thymeleaf 评估并替换为 HTML。th:each
将遍历一个集合并生成尽可能多的元素,collection.size()
而th:text
只是将标记的内容替换为 Java 对象的属性值。
最后,浏览器将收到如下 HTML(假设列表包含 3 个项目):
...
<div>
Name: <span>Item 1</span><br>
Label: <span>IT1</span>
</div>
<div>
Name: <span>Item 2</span><br>
Label: <span>IT2</span>
</div>
<div>
Name: <span>Item 3</span><br>
Label: <span>IT3</span>
</div>
...
Thymeleaf 非常强大,更多信息在这里。
推荐阅读
- ghostscript - 如何为 DEVICE=tiffsep1 设置像素级墨水限制
- python - Python连接两个具有共同第一个索引的列表
- vue.js - 如何在vuejs中使用jspdf在PDF文件上显示svg图像
- android - Google Mobile Vision ocrlib.so 文件下载错误
- c# - 从 Raspberry Pi 连接到 SQL Server 导致错误 35(在登录前握手期间)
- image - 灰度图像而不是 RGB 的阴影
- android - ML Kit 文本识别 + 西里尔文
- node.js - 在本地 Windows 中配置 Puppeteer executablePath chrome
- python - 我能做些什么来改变逗号中的点?
- spring-boot - 如何在微服务架构中实现基于角色的安全性