私はSpring Bootを使用していて、 IE条件付きコメントThymeleaf方言 を追加したいと思います。
私はそれを私のmaven pom.xmlに含めましたが、機能していません。 Thymeleafにそれを使用するように指示するにはどうすればよいですか?
注:これを試す前に、Spring Bootの新しいバージョンには一般的な方言がいくつか含まれていることに注意してください。 @Robert Huntの answer を参照してください。さもないと:
ダイアレクトBeanを追加する例 here があり、Spring Bootが自動的に検出して使用します(LayoutDialectコードとThymeleafDefaultConfigurationクラスの方言メンバーを参照)。あなたのケースでは、あなたの@Configuration
クラスの1つに以下を追加してください:
@Bean
public ConditionalCommentsDialect conditionalCommentDialect() {
return new ConditionalCommentsDialect();
}
ThymeleafAutoConfigurationクラスのSpring Bootは、IDialectインターフェースを実装するBeanを自動的に追加します。
Spring Boot 1.2.1のリリースにより、いくつかの方言が ThymeleafAutoConfiguration クラスに追加されました。
クラスパスにJARがあるだけで、Spring Bootはそれらを登録できます。
注:spring-boot-starter-thymeleaf
を使用している場合、デフォルトで LayoutDialect がすでに含まれていることがわかります。
ThymeleafAutoConfiguration に欠陥があると私は実際に考えています。クラスパス上にある場合、SpringSecurityDialectを取得して構成に追加するはずのコードが表示されますが、私のデバッグでは、これは単に発生していません(LayoutDialectのみが指示され、構成に追加されます)。クラスパスにSpringSecurityDialectクラス/ jarがありますが、以下のBeanはSpringBoot AutoConfig(ThymeleafAutoConfig.Java、line 97)によって構成に追加されません。
@Configuration
@ConditionalOnClass({SpringSecurityDialect.class})
protected static class ThymeleafSecurityDialectConfiguration {
protected ThymeleafSecurityDialectConfiguration() {
}
@Bean
@ConditionalOnMissingBean
public SpringSecurityDialect securityDialect() {
return new SpringSecurityDialect();
}
}
最後に、SpringSecurityDialogを認識させるために、実際にBeanをカスタムJava configに追加する必要がありました。
@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>