首页 > 解决方案 > Thymeleaf 使用模型图中的 Spring 值填充 th:attr

问题描述

我正在尝试将模型映射(在控制器中设置)中的值传递到我的 Thymeleaf(版本 3.0.11)模板中的外部 Javascript 文件,但我无法让它工作。我的猜测是我的语法不正确,但我无法找到关于我要解决的确切问题的正确文档。

因此,在控制器中,我在模型映射中存储了一个值:

@RequestMapping(method = GET)
public String showView(final ModelMap modelMap, final HttpServletRequest request) {
    modelMap.addAttribute(MESSAGE, "message");
    return VIEW;
}

然后在VIEW模板中,我目前正在使用内联 Javascript 来设置稍后在外部 Javascript 文件中使用的值(目前工作正常):

<script th:inline="javascript">
    const message = /*[[${MESSAGE}]]*/ '';
</script>

但是我们想从应用程序中删除所有内联 Javascript,所以我们需要以其他方式传递这个值。我们的想法是这样做:

<div id="SOME_ID" th:attr="data-message=${MESSAGE}">SOME CONTENT</div>

然后在外部 Javascript 文件中,我们得到这个属性的值,如:

var message = document.getElementById("SOME_ID").getAttribute("data-message");

但不幸的是,这不起作用,在这种情况下变量始终为空..

它确实适用于其他类型的属性,例如:

<div id="SOME_OTHER_ID" th:attr="data-url=@{/some/url}"

我们可以在外部 Javascript 中正确获取这个值,如下所示:

var url = document.getElementById("SOME_OTHER_ID").getAttribute("data-url");

我们是否使用了错误的语法?还是我们根本不应该采用这种方法?

标签: javascriptspringmodel-view-controllerthymeleaf

解决方案


推荐阅读