spring boot 与thymeleaf整合问题

QQ图片20170603213009.png QQ图片20170603213037.png QQ图片20170603213116.png QQ图片20170603213148.png QQ图片20170603213201.png QQ图片20170603215109.png
已邀请:

carl_zhao - http://blog.csdn.net/u012410733

赞同来自: ayuileng devin

你的错误应该是创建TemplateResolver的时候设置template资源前缀出错了。

11.jpg


Spring boot再项目编译之后会生成以下目录:

11.jpg


template的目录是和classes的目录是平级的。而classes在Servlet容器的概念就是classpath.
 
另外如果你引用了以下jar包:
<!-- spring boot web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- spring boot thymeleaf -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>


Spring boot会引用自动配置autoconfigure。

11.jpg

 
你其实不用配置Thymeleaf的信息。关于它如何配置的你可以参照ThymeleafAutoConfiguration.java,最终你可以在ThymeleafProperties.类中找到它的默认配置。

11.jpg

它的自动配置机制是@Condition机制。你可以关注一下@Condition*注解。

xiaobaxi - Fang Oba

赞同来自:

WebMvcConfig是不是没有加@Configuration注解

format_coder - fangjian0423.github.io

赞同来自:

没有看到完整的代码。
 
我先指出两个问题。
 
1. 为何自己写个WebMvcConfig配置类,ComponentScan和EnableWebMvc注解可以使用SpringBoot内部的SpringBootApplication注解完成即可。这个SpringBootApplication完成了你写的这2个注解的功能
2. 这个WebMvcConfig配置类里面注册的bean在springboot中引入一个thymeleaf的start即可。引入后它会触发ThymeleafAutoConfiguration自动化配置类的构造,然后会引入你在WebMvcConfig中定义的bean。具体的thymeleaf配置可以参考 https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#common-application-properties 里面spring.thymeleaf开头的配置
 
另外,猜测问题可能出在了TemplateResolver身上。
 
构造TemplateResolver的时候,使用TemplateResolver,然后设置一下它的ResourceResolver。
 
TemplateResolver resolver = new TemplateResolver();
resolver.setPrefix("classpath:/templates");
SpringResourceResourceResolver resourceResolver = new SpringResourceResourceResolver();
resourceResolver.setApplicationContext(applicationContext);
resolver.setResourceResolver(resourceResolver);
return resolver;
prefix加上classpath:前缀

杨小强 - http://www.jianshu.com/u/997ed7c05f59

赞同来自:

楼上正解

要回复问题请先登录注册