Я пытаюсь передать значение из карты модели (которая установлена в контроллере) во внешний файл Javascript в моем шаблоне Thymeleaf (версия 3.0.11), но я не могу заставить его работать. Я предполагаю, что мой синтаксис неправильный, но я не могу найти надлежащую документацию по конкретной проблеме, которую пытаюсь решить.
Итак, в контроллере я сохраняю значение в карте модели:
@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");
Используем ли мы неправильный синтаксис? Или мы не должны go для такого подхода вообще?