Thymeleaf fill th: attr со значением Spring из модели - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь передать значение из карты модели (которая установлена ​​в контроллере) во внешний файл 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 для такого подхода вообще?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...