Я использую Spring Boot, и я хочу добавить условные комментарии IE Тимелеафа.
Я включил его в свой maven pom.xml, но он не работает. Как сказать Тимелеафу использовать его?
Я использую Spring Boot, и я хочу добавить условные комментарии IE Тимелеафа.
Я включил его в свой maven pom.xml, но он не работает. Как сказать Тимелеафу использовать его?
ПРИМЕЧАНИЕ.. Прежде чем пытаться это сделать, обратите внимание, что более поздние версии Spring Boot включают некоторые из распространенных диалектов из коробки. См. @Robert Hunt ответ. В противном случае:
Вот пример здесь добавления Dialect beans, который Spring Boot будет автоматически обнаруживать и использовать (см. код LayoutDialect и член диалектов класса ThymeleafDefaultConfiguration). В вашем случае добавьте следующее из одного из ваших классов @Configuration
:
@Bean
public ConditionalCommentsDialect conditionalCommentDialect() {
return new ConditionalCommentsDialect();
}
Spring Загрузка в классе ThymeleafAutoConfiguration автоматически добавит любой Beans, который реализует интерфейс IDialect.
С выпуском Spring Boot 1.2.1 в класс ThymeleafAutoConfiguration добавлено несколько дополнительных диалектов, которые будут автоматически обнаружены, если они включены путь к классам, включая:
Просто наличие JAR в пути к классам достаточно для Spring Boot для их регистрации.
Примечание. Если вы используете spring-boot-starter-thymeleaf
, вы обнаружите, что LayoutDialect уже включен по умолчанию.
Я действительно думаю, что есть дефект в ThymeleafAutoConfiguration. Я вижу код, где он должен собирать и добавлять SpringSecurityDialect в Config, если он находится в пути к классам, но в моей отладке это просто не происходит (только LayoutDialect получает направленность и добавляется в конфигурацию). У меня есть класс /jar SpringSecurityDialect для моего пути к классам, но bean ниже никогда не добавляется в конфигурацию SpringBoot AutoConfig (ThymeleafAutoConfig.java, строка 97)
@Configuration
@ConditionalOnClass({SpringSecurityDialect.class})
protected static class ThymeleafSecurityDialectConfiguration {
protected ThymeleafSecurityDialectConfiguration() {
}
@Bean
@ConditionalOnMissingBean
public SpringSecurityDialect securityDialect() {
return new SpringSecurityDialect();
}
}
В конце концов, мне пришлось фактически добавить bean в мою конфигурацию Java, чтобы распознать 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>