javascript - 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");
我们是否使用了错误的语法?还是我们根本不应该采用这种方法?
解决方案
推荐阅读
- uima - extract text from indented text file using ruta
- angular - `TypeError: Cannot read property 'dispatchEvent' of null` - 开玩笑的角度测试
- android - 微型 USB 主机中的 Android CDC 通信以从设备读取
- excel - 无效的过程调用或参数(错误 5)但代码正确执行
- r - 是否有用于复制数据框的 R 函数
- java - 无法创建 Vpn 服务
- c - 为什么信号量不阻塞第二个线程?(C)
- objective-c - NSTaggedPointerString stringByReplacingCharactersInRange:withString:]: iOS13 中的 nil 参数
- sql - 为制药行业的药品生成唯一的序列号
- node.js - 无法执行“npm install --save firebase”