1、添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
2、配置application.properties
spring.freemarker.template-loader-path=classpath:/templates/
spring.freemarker.charset=utf-8
spring.freemarker.cache=false
spring.freemarker.suffix=.ftl
spring.freemarker.request-context-attribute=request
3、创建资源目录
resources 下创建 templates 目录,新增 index.ftl 文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
${name}
</body>
</html>
4、编写控制器
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TestController {
@RequestMapping(value = "/test")
public String test(Model model){
model.addAttribute("name", "admin");
return "index";
}
}
5、注意事项
freemarker 文件中的 js 引用一定要加闭合标签,且不能使用/>
6、模板方法
- template类
package com.vim.common.freemarker;
import com.vim.common.constants.Global;
import freemarker.template.TemplateMethodModelEx;
import freemarker.template.TemplateModelException;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class DictListTemplate implements TemplateMethodModelEx {
@Override
public Object exec(List arguments) throws TemplateModelException {
return Global.getDictList(arguments.get(0).toString());
}
}
- 注册模板类
package com.vim.common.config;
import com.vim.common.freemarker.DictListTemplate;
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 FreemarkerConfig {
@Autowired
private ServletContext servletContext;
@Autowired
private freemarker.template.Configuration configuration;
@PostConstruct
public void setVariableConfiguration() throws TemplateModelException {
//路径变量
configuration.setSharedVariable("ctx", servletContext.getContextPath());
configuration.setSharedVariable("ctxStatic", servletContext.getContextPath() + "/statics");
//字典数据
configuration.setSharedVariable("dictList", new DictListTemplate());
}
}