1、引入FreeMarker启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
2、在application.properties配置FreeMarker
#URL转码字符集
spring.freemarker.settings.urlEscapingCharset=UTF-8
#模板缓存时间
spring.freemarker.settings.templateUpdateDelay=5
#自动检测标签语法
spring.freemarker.settings.tagSyntax=autoDetect
#清除多余空白
spring.freemarker.settings.whitespaceStripping=true
#解决前台使用${}赋值值为空的情况
spring.freemarker.settings.classicCompatible=true
#数字格式
spring.freemarker.settings.numberFormat=0.######
#布尔格式
spring.freemarker.settings.booleanFormat=true,false
#日期时间格式
spring.freemarker.settings.datetimeFormat=yyyy-MM-dd HH:mm:ss
#日期格式
spring.freemarker.settings.dateFormat=yyyy-MM-dd
#时间格式
spring.freemarker.settings.timeFormat=HH:mm:ss
#启用内置API
spring.freemarker.settings.apiBuiltinEnabled=true
#对象包装器
spring.freemarker.settings.objectWrapper=DefaultObjectWrapper(2.3.28)
#模板异常处理器
spring.freemarker.settings.templateExceptionHandler=htmlDebug
3、配置全局变量
import freemarker.template.TemplateModelException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
import javax.servlet.ServletContext;
@Configuration
public class FreeMarkerVariableConfiguration {
@Autowired
private ServletContext servletContext;
@Autowired
private freemarker.template.Configuration configuration;
@PostConstruct
public void setVariableConfiguration() throws TemplateModelException {
configuration.setSharedVariable("base", servletContext.getContextPath());
}
}
注意:自己定义的这个配置类不要和FreeMarker自定义的一些类(FreeMarkerConfigurer等)或者FreeMarkerConfiguration重名,否则spring boot启动会报错。