2017-02-03 99 views
2

在我的模板引擎的配置我想補充SpringSecurityDialect(),如:如何添加Thymeleaf SpringSecurityDialect春天開機

@Bean 
public TemplateEngine templateEngine() { 
    SpringTemplateEngine engine = new SpringTemplateEngine(); 
    engine.addDialect(new SpringSecurityDialect()); 
    engine.setEnableSpringELCompiler(true); 
    engine.setTemplateResolver(templateResolver()); 
    return engine; 
} 

但是Eclipse是告訴我:

類型org.thymeleaf.dialect.IExpressionEnhancingDialect無法解析。它是從所需的.class文件間接引用的

這是什麼意思,我該如何解決它?

pom.xml我:

<dependency> 
    <groupId>org.thymeleaf.extras</groupId> 
    <artifactId>thymeleaf-extras-springsecurity4</artifactId> 
</dependency> 

回答

3

這意味着org.thymeleaf.extras:thymeleaf-extras-springsecurity4有依賴關係org.thymeleaf:thymeleaf,你可以在鏈接到上述回購看到。顯然你沒有提供這種依賴。類IExpressionEnhancingDialect在那裏。您可以通過將依賴項添加到項目來解決該問題。

因爲這可能會有點複雜......我也有春天開機,春季安全和thymeleaf安全方言(加上春天的數據與H2)玩耍。這裏是我的依賴關係的gradle參考,他們可以幫助你以某種方式:

ext['thymeleaf.version'] = '3.0.1.RELEASE' 
ext['thymeleaf-layout-dialect.version'] = '2.0.0' 

dependencies { 
    compile("org.springframework.boot:spring-boot-devtools") 
    compile("org.springframework.boot:spring-boot-starter-web") 
    compile("org.springframework.boot:spring-boot-starter-thymeleaf") 
    compile("org.springframework.boot:spring-boot-starter-data-jpa") 
    compile("org.springframework.boot:spring-boot-starter-security") 
    compile("org.thymeleaf.extras:thymeleaf-extras-springsecurity4:3.0.1.RELEASE") 

    compile("com.h2database:h2") 
} 

注意,我想thymeleaf 3而不是2使用,這就是爲什麼有我的配置一些額外的令人不快的調整。

編輯:thymeleaf-extras-springsecurity4的版本應該是相同的thymeleaf.version如其他答案建議。

+1

謝謝。它現在有效。我不得不添加的版本(3.0.1.RELEASE)到thymeleaf - 演員 - springsecurity4,也改變了thymeleaf版本從3.0.2.RELEASE到3.0.1.RELEASE – user1583209

3

由於@Lachezar已經回答了,你要添加這些缺少的依賴關係。但隨着ext['thymeleaf.version'] = '3.0.0.RELEASE指定的版本應該是相同的編譯依賴讓你更好的使用ext['thymeleaf.version'] = '3.0.1.RELEASE'

此外,請不,這是不夠的,只是指定安全方言豆而不考慮模板引擎提供的bean。通過類路徑中的Thymeleaf,它將自動識別該bean是IDialect的一個實例,並將其直接添加到方言中:

@Bean 
public SpringSecurityDialect springSecurityDialect() { 
    return new SpringSecurityDialect(); 
} 
+0

謝謝,湯姆。我會修復我的答案(當然還有我的玩具項目),以便版本相同。 –