问题提出
一个SpringBoot项目中,用到了freemarker,如下:
用到了ModelAndView,这个数据结构长这个样子:
model中存放着返回的Map<>数据。
这是我想返回的视图模板,存放在templates目录下面:
但是,运行之后访问这个接口,response报错提示:
问题探索
首先要了解freemarker的概念:freemarker简介
1.查看是否引入依赖,依赖引入是否正确
有两个依赖,一个叫freemarker,一个叫spring-boot-starter-freemarker,根据项目是否为SpringBoot项目来引入。博主的项目是spring-boot-starter-freemarker,却引入了freemarker,因此排查了好久。
freemarker的依赖:
<!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
spring-boot-starter-freemarker的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
可以前往Maven Repository,搜索freemarker,了解更详细的情况:Maven Repository
2. 查看模板的后缀名和SpringBoot的版本
本条问题解决方案来源:SpringBoot2.2.X用Freemarker出现404
SpringBoot在2.2.X中,已经把原先默认的后缀名.ftl改成了.ftlh,如果想继续保持以前的.ftl后缀名,需要在配置文件application.yml中配置一下(或application.properties,修改一下排版格式):
spring:
freemarker:
suffix: .ftl
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。