2016-06-29 7 views
1

Как получить thymeleaf для разрешения моих объектов html?Thymeleaf не будет разрешать html-объекты

У меня есть следующие:

<input th:name="title" th:value="Wayne&rsquo;s World" /> 

будет просто произвести входной элемент с "Wayne&rsquo;s World" вместо "Wayne's world".

Любой способ заставить thymeleaf разрешить объекты html?

ответ

1

У вас есть два варианта.

Первый. Не используйте html-объекты вообще. Просто избегайте специальных символов, используя \. Обратите внимание, что вы должны указать значение строки в одинарных кавычках:

<input th:name="title" th:value="'Wayne\'s World'" /> 

Второй. Использование Thymeleaf-х string utility для эвакуации XML enitites:

<input th:name="title" th:value="${#strings.escapeXml('Wayne&rsquo;s World')}" /> 

Когда строковое значение приходит от контроллера, не используйте __${}__ выражение препроцессирования. Это не нужно. Просто используйте стандартное переменное выражение Thymeleaf ${}. И не добавляйте это выражение в одинарные кавычки. Посмотрите на ${title} переменной в следующем примере:

<th:block th:include="row::row(attrs='value=${title}, minLength=\'.{1, 16}\', required=true, ... /> 

В этом случае вы можете добавить строковое значение в контроллере, как есть, без каких-либо побега:

public String method(ModelMap model){ 
    ... 
    mode.addAttribute("title", "Wayne's world"); 
    ... 
} 
+0

К сожалению, потребность в HTML сущности является для случаев, когда в заголовке есть цитата, как показано ниже. '' Чтобы избежать цитаты (например, 'Wayne' \ s World'), вызывает синтаксический разбор по очевидным причинам. Для использования html-сущностей (т. Е. 'Wayne ’ s World') просто печатает без оценки, а для избежания его с помощью' # strings.escapeXml' выбрасывается одно исключение синтаксического анализа как первое по тем же причинам. – 000

+0

@ 000 Непонятно. Означает ли это, что вы получаете '$ {title}' от контроллера? –

+0

Да, '$ {title}' поступает с контроллера – 000