Thymeleaf - Строгая проблема синтаксического анализа HTML
HTML5 позволяет записывать несколько тегов более либерально, без соответствующих тегов END. например input
не нужно закрывать </input>
. Однако если выбрать режим шаблона HTML5
в Thymeleaf, то механизм Thymeleaf жалуется на это и не анализирует HTML-шаблон. Я хочу переопределить это поведение проверки строкового тега по умолчанию. i.e Thymeleaf должен анализировать HTML-шаблон с мета-и входными (AND ALIKE) тегами БЕЗ ИХ РЕСП. ЗАКРЫТЬ ТЕГИ. Pl. руководство.
Он также жалуется, когда у вас есть что-то вроде этого
<a href="/home/pic/image.png" download="/path/to/file" data-gallery></a>
Он выдает исключение, когда он сталкивается с галереей данных throws ", за которым следует" = ", что довольно раздражает, так как требует гибкости из HTML5.
Ответы
Ответ 1
Все, что вам нужно сделать, - запустить Thymeleaf в режиме "LEGACYHTML5", и это работает как шарм. Благодаря этим и этой, я нашел решение и документирую в SO, чтобы другим не приходилось проделайте ту же самую проблему в поиске этого ответа.
Чтобы установить устаревший режим, вы можете определить bean в XML файле Spring:
<!-- View TemplateResolver -->
<bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
<property name="templateMode" value="LEGACYHTML5"/>
<property name="cacheable" value="false"/>
</bean>
или добавьте свойства в файл application.properties:
spring.thymeleaf.mode=LEGACYHTML5
spring.thymeleaf.cache=false
И в обоих случаях вам нужно добавить банку nekohtml
в свой проект или, если вы используете maven, вы можете добавить свою зависимость к вашему pom.xml
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.21</version>
</dependency>
Gradle
'net.sourceforge.nekohtml:nekohtml:1.9.21'
Ответ 2
Вот как вы можете сделать это аккуратным способом
Шаг 1: Добавьте режим thymeleaf в файл application.properties.
ресурсы/application.properties
spring.thymeleaf.mode=LEGACYHTML5
Шаг 2: Добавьте зависимость nekohtml к вашему файлу pom.xml.
pom.xml
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
</dependency>