2015-02-20 11 views
16

HTML5 consente di scrivere alcuni tag in modo più libero senza i tag END corrispondenti. per esempio. input non deve essere chiuso </input>. Tuttavia, se si sceglie la modalità modello HTML5 in Thymeleaf, il motore di Thymeleaf si lamenta di ciò e non analizza il modello HTML. Voglio ignorare questo comportamento di controllo dei tag strict strict. i.i Thymeleaf dovrebbe analizzare un modello HTML con tag meta e input (AND ALIKE) SENZA RISPOSTA. TAG CLOSING. Pl. guida.Thymeleaf - Strict HTML parsing issue

Si lamenta anche quando si ha qualcosa di simile

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

viene generata un'eccezione quando incontra il dati galleria tiri "dovrebbe essere seguita da '='", che è una specie di fastidioso come toglie la flessibilità da HTML5.

risposta

54

Tutto ciò che dovete fare è eseguire Thymeleaf in modalità "LEGACYHTML5" e funziona come un fascino. Grazie a this e this post, ho trovato la soluzione e sto documentando in SO così altri non devono passare attraverso lo stesso problema nel trovare questa risposta.

per impostare la modalità legacy è possibile definire il fagiolo nel file XML Primavera:

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

o aggiungere le proprietà al file application.properties:

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

E in entrambi i casi devi aggiungere il vaso nekohtml al tuo progetto o, se stai usando Maven, puoi aggiungere la sua dipendenza al tuo 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' 
1

Ecco come si può fare in un modo pulito

Fase 1: Aggiungi thymeleaf modalità al file application.properties.

risorse/application.properties

spring.thymeleaf.mode=LEGACYHTML5 

Fase 2: Aggiungi dipendenza nekohtml al file pom.xml.

pom.xml

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