一尘不染

Thymeleaf + Boot + AngularJS指令解析器错误

spring-boot

这应该很容易,但是我找不到任何解决方案。

我在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解析器,但仍然没有结果。


阅读 225

收藏
2020-05-30

共1个答案

一尘不染

改变你的

@Bean
public ServletContextTemplateResolver templateResolver() { ... }

@Bean
public ServletContextTemplateResolver defaultTemplateResolver() { ... }

(默认通知)。

在您的情况下,spring(boot)并未将您的配置用于Thymeleaf,因此您会收到有关解析非标准属性的“奇怪”错误(因为默认解析器为XHTML)。

2020-05-30