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>