mvc - taglib spring html
¿Cómo agrego un dialecto de tomillo para el arranque de primavera? (3)
Estoy usando Spring Boot y quiero agregar los comentarios condicionales de IE Thymeleaf dialect .
Lo he incluido en mi maven pom.xml, pero no está funcionando. ¿Cómo le digo a Thymeleaf que lo use?
Con el lanzamiento de Spring Boot 1.2.1, se han agregado algunos dialectos adicionales a la clase ThymeleafAutoConfiguration , que se detectarán automáticamente si se encuentran en la ruta de acceso de clases, que incluye:
Simplemente teniendo el JAR en el classpath es suficiente para que Spring Boot los registre.
Nota: Si está utilizando spring-boot-starter-thymeleaf
entonces encontrará que LayoutDialect ya está incluido por defecto.
De hecho, creo que hay un defecto en ThymeleafAutoConfiguration . Veo el código donde se supone que debe recoger y agregar SpringSecurityDialect a Config si está en classpath, pero en mi depuración, esto simplemente no está sucediendo (solo LayoutDialect se dirige y se agrega a la configuración). Tengo la clase / jar SpringSecurityDialect en mi classpath, pero el siguiente bean nunca se agrega a la configuración por SpringBoot AutoConfig (ThymeleafAutoConfig.java, línea 97)
@Configuration
@ConditionalOnClass({SpringSecurityDialect.class})
protected static class ThymeleafSecurityDialectConfiguration {
protected ThymeleafSecurityDialectConfiguration() {
}
@Bean
@ConditionalOnMissingBean
public SpringSecurityDialect securityDialect() {
return new SpringSecurityDialect();
}
}
Al final, tuve que agregar un bean a mi configuración de Java personalizada para obtener el SpringSecurityDialog reconocido:
@Bean
public SpringSecurityDialect securityDialect() {
return new SpringSecurityDialect();
}
Esto funcionó por primera vez. ¿Puede hacer algunas pruebas para verificar que este es un problema conocido o no? Incluyo mi 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>
NOTA: Antes de intentar esto, tenga en cuenta que las versiones posteriores de Spring Boot incluyen algunos de los dialectos comunes listos para usar. Ver la answer @Robert Hunt. De otra manera:
Aquí hay un ejemplo de cómo agregar beans Dialect, que Spring Boot detectará y utilizará automágicamente (vea el código LayoutDialect y el miembro dialectos de la clase ThymeleafDefaultConfiguration). En su caso, agregue lo siguiente en una de sus clases @Configuration
:
@Bean
public ConditionalCommentsDialect conditionalCommentDialect() {
return new ConditionalCommentsDialect();
}
Spring Boot, en la clase Thymeleaf AutoConfiguration, agregará automáticamente cualquier Beans que implemente la interfaz IDialect.