首页 > 解决方案 > 什么是 spring mvc Java 中的视图引擎以及它是如何工作的?

问题描述

我听说过“百里香叶”这个词作为视图引擎。但我不知道它在 Web 应用程序中的工作位置,请澄清这一点。

标签: springspring-mvc

解决方案


它们通常被称为模板引擎,并提供将 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:eachth: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 非常强大,更多信息在这里


推荐阅读