org.thymeleaf.exceptions.TemplateProcessingException: в этом контексте допускаются только переменные выражения, возвращающие числа или логические значения - PullRequest
0 голосов
/ 16 января 2019

Я использовал атрибут thymeleaf th:onclick для вызова javascript функции с параметрами, как показано ниже

th:onclick="|myFunction('${parameter1}')|"

Но с thymeleaf 3.1.10 это было удалено . и они предлагают использовать атрибут th:data.

Однако я нашел обходной путь, как показано ниже, и оба они работают отлично.

  1. th:attr="onclick=|myFunction('${parameter1}')|"
  2. th:onclick="@{myFunction('${parameter1}')}">

Теперь я не уверен, являются ли эти обходные пути правильным способом, и если да, какой из них лучше.

1 Ответ

0 голосов
/ 17 января 2019

Первый будет работать так, как вы хотите - однако вы обойдете ограничение безопасности, и теперь ваши страницы уязвимы для внедрения javascript (что является первоначальной причиной внесения этого изменения).

Второй просто не работает. Она не раскрывает переменную ${parameter1}, а просто кодирует ее как URL-адрес, например:

onclick="myFunction?$%7Bparameter1%7D"

Вы действительно должны делать это, как показано на странице.

th:data-parameter1="${parameter1}" onclick="myFunction(this.getAttribute('data-parameter1'));"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...