如何在弹簧靴中添加百里香方言?

时间:2014-05-08 02:11:48

标签: spring spring-boot thymeleaf

我使用的是Spring Boot,我想添加IE conditional comments Thymeleaf dialect

我已将它包含在我的maven pom.xml中,但它无效。我如何告诉Thymeleaf使用它?

3 个答案:

答案 0 :(得分:31)

注意:在尝试此操作之前,请注意更高版本的Spring Boot包含一些开箱即用的常用方言。请参阅@Robert Hunt的answer。否则:

有一个添加Dialect bean的示例here,Spring Boot将自动检测和使用它(请参阅LayoutDialect代码和ThymeleafDefaultConfiguration类的方言成员)。在您的情况下,添加以下@Configuration个类中的以下内容:

@Bean
public ConditionalCommentsDialect conditionalCommentDialect() {
    return new ConditionalCommentsDialect();
}
在ThymeleafAutoConfiguration类中,Spring Boot会自动添加任何实现IDialect接口的Beans。

答案 1 :(得分:12)

随着Spring Boot 1.2.1的发布,ThymeleafAutoConfiguration类增加了一些额外的方言,如果它们在类路径上,将自动检测到:

只需在类路径上使用JAR就足以让Spring Boot注册它们。

注意:如果您使用的是spring-boot-starter-thymeleaf,那么您会发现默认情况下已包含LayoutDialect

答案 2 :(得分:5)

我实际上认为ThymeleafAutoConfiguration存在缺陷。我看到它应该拾取的代码并将SpringSecurityDialect添加到Config,如果它在类路径上,但在我的调试中,这根本不会发生(只有LayoutDialect被定向并添加到配置中)。我的classpath上有SpringSecurityDialect类/ jar,但SpringBoot AutoConfig(ThymeleafAutoConfig.java,第97行)从未将下面的bean添加到配置中

  @Configuration
@ConditionalOnClass({SpringSecurityDialect.class})
protected static class ThymeleafSecurityDialectConfiguration {
    protected ThymeleafSecurityDialectConfiguration() {
    }

    @Bean
    @ConditionalOnMissingBean
    public SpringSecurityDialect securityDialect() {
        return new SpringSecurityDialect();
    }
}

最后,我必须在我的自定义Java配置中添加一个bean才能识别SpringSecurityDialog:

@Bean
public SpringSecurityDialect securityDialect() {
    return new SpringSecurityDialect();
}

这是第一次。您是否可以通过一些测试来验证这是一个已知问题?我包含了我的pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.2.5.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

  <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.thymeleaf.extras</groupId>
        <artifactId>thymeleaf-extras-springsecurity4</artifactId>
        <version>2.1.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>