胸腺用模型映射中的Spring值填充th:attr

时间:2020-04-22 13:48:25

标签: javascript spring model-view-controller thymeleaf

我试图将值从模型映射(在控制器中设置)传递到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");

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

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

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

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

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

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

0 个答案:

没有答案