Thymeleaf разрешить только тег ruby, экранировать другие теги - PullRequest
0 голосов
/ 09 октября 2018

Я хочу показать тег ruby html в шаблоне тимелина следующим образом:

<h1 th:text="(${author.displayNameReading} != null) ? '<ruby><rb>' + ${author.displayName} + '</rb><rt>' + ${author.displayNameReading} + '</rt></ruby>' : ${author.displayName}" th:lang="${author.locale}">Some author name</h1>

Если я использую th:text, он будет экранирован.Это работает, если я использую utext, но тогда я потеряю всю безопасность для других тегов html.

Можно ли разрешить только теги ruby, rt и rb внутри th:text?

1 Ответ

0 голосов
/ 09 октября 2018

Зачем пытаться вставить все в атрибут th:text?Вы можете легко разделить всю эту информацию на новые теги - которые будут более удобочитаемыми (отформатирован как обычный html, с меньшим количеством конкатенаций строк) и более безопасны (не нужно th:utext).Примерно так, например:

<h1 th:lang="${author.locale}">
  <ruby th:if="${author.displayNameReading != null}">
    <rb th:text="${author.displayName}" />
    <rt th:text="${author.displayNameReading}" />
  </ruby>

  <span th:unless="${author.displayNameReading != null}" th:text="${author.displayName}" />
</h1>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...