web-dev-qa-db-fra.com

Thymeleaf - Problème d'analyse HTML strict

HTML5 permet à certaines balises d'être écrites plus librement, c'est-à-dire sans balises END correspondantes. par exemple. input n'a pas besoin d'être fermé </input>. Cependant, si vous choisissez mode modèleHTML5 dans Thymeleaf, le moteur Thymeleaf s'en plaint et n'analyse pas le modèle HTML. Je veux remplacer ce comportement de vérification de balise Strict par défaut. c'est-à-dire que Thymeleaf devrait analyser un modèle HTML avec des balises meta et input (AND ALIKE) SANS LEUR RESP. ÉTIQUETTES DE CLÔTURE. PL. guider.

Il se plaint également lorsque vous avez quelque chose comme ça

<a href="/home/pic/image.png" download="/path/to/file" data-gallery></a>

Il lève une exception lorsqu'il rencontre le data-gallery jette "devrait être suivi de '='" ce qui est assez ennuyeux car il supprime la flexibilité de HTML5.

22
Mushtaq Jameel

Tout ce que vous avez à faire est d'exécuter Thymeleaf en mode "LEGACYHTML5" et cela fonctionne comme un charme. Grâce à this et this post, j'ai trouvé la solution et je documente en SO afin que les autres n'aient pas à passer par le même problème en trouvant cette réponse.

Pour définir le mode hérité, vous pouvez définir le bean dans votre fichier XML Spring:

<!-- View TemplateResolver -->
<bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
    <property name="templateMode" value="LEGACYHTML5"/>
    <property name="cacheable" value="false"/>
</bean>

ou ajoutez les propriétés au fichier application.properties:

spring.thymeleaf.mode=LEGACYHTML5
spring.thymeleaf.cache=false

Et dans les deux cas, vous devez ajouter le pot nekohtml à votre projet ou, si vous exécutez maven, vous pouvez ajouter sa dépendance à votre 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'
58
Mushtaq Jameel

Voici comment vous pouvez le faire d'une manière ordonnée

Étape 1: Ajoutez le mode thymeleaf à votre fichier application.properties.

resources/application.properties

spring.thymeleaf.mode=LEGACYHTML5

Étape 2: Ajoutez la dépendance nekohtml à votre fichier pom.xml.

pom.xml

<dependency>
    <groupId>net.sourceforge.nekohtml</groupId>
    <artifactId>nekohtml</artifactId>
</dependency>
4
VK321