这应该很容易,但是我找不到任何解决方案。
我在Jetty上使用带有Thymeleaf的Spring Boot 1.0.2来支持我的AngularJS应用程序。但是使用属性指令时,解析器会引发异常。
pom.xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>net.sourceforge.nekohtml</groupId> <artifactId>nekohtml</artifactId> <version>1.9.20</version> </dependency>
Thymeleaf配置
@Configuration public class ThymeleafConfig { @Bean public ServletContextTemplateResolver templateResolver() { ServletContextTemplateResolver resolver = new ServletContextTemplateResolver(); resolver.setPrefix("/templates/"); resolver.setSuffix(".html"); resolver.setTemplateMode("LEGACYHTML5"); resolver.setCacheable(false); return resolver; } @Bean public ResourceBundleMessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasename("messages"); messageSource.setDefaultEncoding("UTF-8"); return messageSource; } }
Thymeleaf可以正常工作,但是它存在诸如Bootstrap UI示例这样的属性指令的问题:
<div class="btn-group" dropdown is-open="true"> <button type="button" class="btn btn-primary dropdown-toggle"> Button dropdown<span class="caret"></span> </button> <ul class="dropdown-menu" role="menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li class="divider"></li> <li><a href="#">Separated link</a></li> </ul> </div>
我收到此错误
org.xml.sax.SAXParseException: Attribute name "dropdown" associated with an element type "div" must be followed by the ' = ' character.
我在哪里可以调整Thymeleaf以接受此类属性?
编辑
我为LEGACYHTML5添加了nekoHTML解析器,但仍然没有结果。
改变你的
@Bean public ServletContextTemplateResolver templateResolver() { ... }
与
@Bean public ServletContextTemplateResolver defaultTemplateResolver() { ... }
(默认通知)。
在您的情况下,spring(boot)并未将您的配置用于Thymeleaf,因此您会收到有关解析非标准属性的“奇怪”错误(因为默认解析器为XHTML)。