Thymeleaf - 严格的HTML解析问题

时间:2015-02-20 08:43:47

标签: html html5 thymeleaf

HTML5允许更自由地编写某些标签,即没有相应的END标签。例如input无需关闭</input>。但是,如果在Thymeleaf中选择模板模式 HTML5,则Thymeleaf引擎会抱怨此问题并且不会解析HTML模板。我想覆盖此默认的严格标记检查行为。即Thymeleaf应解析带有元和输入(AND ALIKE)标签的HTML模板,而无需RESIR。关闭标签。 PL。引导。

当你有这样的事情时,它也会抱怨

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

当它遇到数据库时会抛出异常&#34;应该跟着&#39; =&#39; &#34;这有点令人讨厌,因为它需要HTML5的灵活性。

3 个答案:

答案 0 :(得分:58)

你所要做的就是以“LEGACYHTML5”模式运行Thymeleaf,它就像一个魅力。感谢thisthis帖子,我找到了解决方案并且正在使用SO进行记录,以便其他人不必在找到此答案时遇到同样的麻烦。

要设置遗留模式,您可以在Spring XML文件中定义bean:

<!-- 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 jar添加到项目中,或者,如果您正在运行maven,则可以将其依赖项添加到您的pom.xml

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

摇篮

'net.sourceforge.nekohtml:nekohtml:1.9.21'

答案 1 :(得分:4)

以下是如何以一种简洁的方式完成这项工作

第1步:将百万美元模式添加到您的application.properties文件中。

  

资源/ application.properties

spring.thymeleaf.mode=LEGACYHTML5

第2步:将nekohtml依赖项添加到您的pom.xml文件中。

  

的pom.xml

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

答案 2 :(得分:0)

使用LEGACYHTML5也对我有用。

还必须添加

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

到pom.xml,如上所述。但是可能还会发生另外一个步骤。完成这两个步骤后,我得到了:

java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal

为避免这种情况,有必要添加

<dependency> 
    <groupId>xml-apis</groupId>
    <artifactId>xml-apis</artifactId>
    <version>1.4.01</version>
</dependency>

到pom.xml