web-dev-qa-db-ja.com

Spring BootとThymeleaf 3.0.0.RELEASEの統合

Spring Boot 1.3.5.RELEASEとThymeleaf 3.0.0.Releaseを統合しようとすると、問題が発生します。 Spring BootがThymeleaf 3バージョンをサポートするようになったので、この問題を次のように回避します。

@SpringBootApplication(exclude={org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration.class})

独自のSpringWebConfig構成を追加します。残念ながらこのようなエラーを受け取りました:

Java.lang.ClassNotFoundException: org.thymeleaf.resourceresolver.IResourceResolver
    at Java.net.URLClassLoader.findClass(URLClassLoader.Java:381) ~[na:1.8.0_66]
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:424) ~[na:1.8.0_66]
    at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:331) ~[na:1.8.0_66]
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:357) ~[na:1.8.0_66]
    ... 37 common frames omitted
Wrapped by: Java.lang.NoClassDefFoundError: org/thymeleaf/resourceresolver/IResourceResolver



wrapped by: Java.lang.IllegalStateException: Could not evaluate condition on org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration due to org/thymeleaf/resourceresolver/IResourceResolver not found. M                                                                                                        ake sure your own configuration does not rely on that class. This can also happen if you are @ComponentScanning a springframework package (e.g. if you put a @ComponentScan in the default package by mistake)
8
przodownikPracy

これははるかに簡単です、これを読んでください: http://docs.spring.io/spring-boot/docs/1.5.x/reference/htmlsingle/#howto-use-thymeleaf-

<properties>
    <thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
    <thymeleaf-layout-dialect.version>2.1.1</thymeleaf-layout-dialect.version>
</properties>
17
Henrique Rocha

春のブーツ1.4.0 + thymeleaf 3.0.1

    <dependency>
        <groupId>org.thymeleaf</groupId>
        <artifactId>thymeleaf</artifactId>
        <version>3.0.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.thymeleaf</groupId>
        <artifactId>thymeleaf-spring4</artifactId>
        <version>3.0.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>nz.net.ultraq.thymeleaf</groupId>
        <artifactId>thymeleaf-layout-dialect</artifactId>
        <version>2.0.3</version>
    </dependency>
3
user6856044

1.4.7.RELEASEのドキュメントに記載されているとおり: https://docs.spring.io/spring-boot/docs/1.4.7.RELEASE/reference/htmlsingle/#howto-use-thymeleaf-


Gradleを使用する場合は、これをbuild.gradleファイルに追加します。

Gradle:build.gradle

ext['thymeleaf.version'] = '3.0.2.RELEASE'
ext['thymeleaf-layout-dialect.version'] = '2.1.1'

Mavenを使用する場合は、これをpom.xmlファイルに入れます。

Maven:pom.xml

<properties>
    <thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
    <thymeleaf-layout-dialect.version>2.1.1</thymeleaf-layout-dialect.version>
</properties>

(私は十分な評判がないため、以前の回答の1つにコメントではなく回答を投稿しました。特にbuild.gradleの部分です。)

2
mangei

Mavenプロジェクトの場合、pom.xmlに次の行を追加するだけです

<properties>
    <thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
    <thymeleaf-layout-dialect.version>2.1.1</thymeleaf-layout-dialect.version>
</properties>

Gradleプロジェクトの場合、次の内容でgradle.propertiesファイルを作成します

thymeleaf.version=3.0.2.RELEASE
thymeleaf-layout-dialect.version=2.1.1
1
srsajid

この構成クラスを使用して、Thymeleaf 3と連携するSpring Boot 1.3.3を持っています。同じ例外を回避するために努力しなければならなかったことを思い出します。また、ThymeleafAutoConfigurationは、自動スキャン設定では除外されています。

@Configuration
@EnableConfigurationProperties(ThymeleafProperties.class)
@ConditionalOnClass(SpringTemplateEngine.class)
@AutoConfigureAfter(WebMvcAutoConfiguration.class)

public class ThymeleafConfiguration extends WebMvcConfigurerAdapter implements ApplicationContextAware {

    private ApplicationContext applicationContext;

    @Autowired
    ThymeleafProperties properties;

    public void setApplicationContext(ApplicationContext applicationContext) {
        this.applicationContext = applicationContext;
    }

    @Bean
    public ViewResolver viewResolver() {
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setTemplateEngine(templateEngine());
        resolver.setCharacterEncoding("UTF-8");
        return resolver;
    }

    private TemplateEngine templateEngine() {
        SpringTemplateEngine engine = new SpringTemplateEngine();
        engine.addTemplateResolver(urlTemplateResolver());
        engine.addTemplateResolver(templateResolver());
        // pre-initialize the template engine by getting the configuration.  It's a side-effect.
        engine.getConfiguration();
        return engine;
    }

    private ITemplateResolver templateResolver() {
        SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
        resolver.setApplicationContext(applicationContext);
        resolver.setPrefix("classpath:templates/");
        resolver.setSuffix(".html");
        resolver.setTemplateMode(TemplateMode.HTML);
        resolver.setCacheable(properties.isCache());
        return resolver;
    }

    private UrlTemplateResolver urlTemplateResolver() {
        return new UrlTemplateResolver();
    }

}

(resolver.setPrefix、resolver.setSuffix、およびresolver.setTemplateModeは不要になった可能性がありますが、最初のベータリリースでは使用されていました。)

0
Crunch

簡単なステップバイステップ

1。thymeleafの依存関係を追加します。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

2。thymeleaf方言の依存関係を追加します。

    <dependency>
        <groupId>nz.net.ultraq.thymeleaf</groupId>
        <artifactId>thymeleaf-layout-dialect</artifactId>
    </dependency>

。thymeleafのSpringBoot自動構成

spring.thymeleaf.cache=false
spring.thymeleaf.check-template=true 
spring.thymeleaf.check-template-location=true
spring.thymeleaf.enabled=true 
spring.thymeleaf.servlet.content-type=text/html
spring.thymeleaf.prefix=/WEB-INF/html/
spring.thymeleaf.suffix=.html
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.mode=HTML
spring.thymeleaf.reactive.max-chunk-size=0
0
Vivek Gajbhiye