【问题标题】:how to access variables in thymeleaf templates using spring mvc如何使用spring mvc访问百里香模板中的变量
【发布时间】:2017-11-03 06:47:45
【问题描述】:

如何访问我在 thymeleaf 模板内的 Spring MVC 中添加到模型的变量?我有以下控制器代码:

@Controller
public class ThymeLeafController {

    @GetMapping("/thyme")
    public void thymeleaf(ModelAndView modelAndView) {
        modelAndView.addObject("var1", "var1");
        modelAndView.addObject(Arrays.asList("var2", "var3", "var4"));
        modelAndView.getModel().put("var5", "var5");
        modelAndView.getModelMap().addAttribute("var6", "var6");
        modelAndView.getModelMap().addAttribute(Arrays.asList("var7", "var8", "var9"));

        modelAndView.setViewName("thymeleaf");
    }
}

如何访问 thymeleaf 模板中的变量 var1、var5、var6 等?

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8" />
    <title>Thymeleaf</title>
</head>
<body>
<div th:if="#{var1}"></div>

</body>
</html>

【问题讨论】:

  • 这是非常基础的,你试过教程吗?
  • 我环顾四周,发现如何绑定表单变量。那是我真正需要的。但是我仍然不知道如何在存储在模型中的模板中使用变量。你能给我指个教程吗?可能正在发生其他事情,阻止我访问模板中的变量。 @ModelAttribute 按预期工作。
  • 你检查过th:text="${val1}" 吗?
  • @Zionz 我修改了 OP 中的 div 以包含 th:text="${var1}"。 html 页面显示一个空的
    。如果我更改为 th:text="${var100}",我会得到相同的结果。变量 var100 不存在。

标签: spring-mvc thymeleaf


【解决方案1】:

行为:

访问属性取决于它们的添加位置。如果将属性添加到 ModelAndView 对象,则必须通过 "${modelAndView.model.xxxx}" 访问它们,其中 xxxx 是属性名称。如果将属性添加到模型对象,则可以仅使用属性名称本身“${attributeName}”来访问它们。请参见下面的示例。

控制器:

@GetMapping("/thyme")
public void thymeleaf(ModelAndView modelAndView, Model model) {
    modelAndView.addObject("var1", "var1");
    modelAndView.addObject(Arrays.asList("var2", "var3", "var4"));
    modelAndView.getModel().put("var5", "var5");
    modelAndView.getModelMap().addAttribute("var6", "var6");
    modelAndView.getModelMap().addAttribute(Arrays.asList("var7", "var8", "var9"));

    model.addAttribute("attribute1", "attributeValue1");

}

模板:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8"/>
    <title>Thymeleaf</title>
</head>
<body>
<div th:text="${attribute1}"></div>
<div th:text="${modelAndView.model}"></div>
<div th:text="${modelAndView.model.var1}"></div>
</body>
</html>

输出:

属性值1 {var1=var1, stringList=[var7, var8, var9], var5=var5, var6=var6} 变量1

【讨论】:

    猜你喜欢
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 2017-09-19
    • 2015-06-01
    相关资源
    最近更新 更多