本文的核心内容:Spring Boot整合FreeMarker,FreeMarker的语法。
设计思想:模板 + 数据 ---> 文本输出
①:引入Maven依赖
org.springframework.boot
spring-boot-starter-freemarker
②:FreeMarker配置
#------FreeMarker配置Start----#
spring.freemarker.cache=false
spring.freemarker.enabled=true
#后缀
spring.freemarker.suffix=.ftl
#前缀
spring.freemarker.prefix=/
#------FreeMarker配置End----#
③:创建Controller跳转视图,并传递数据
@Controller
public class MyController {
@RequestMapping("/index")
public ModelAndView getFreeMarker(){
ModelAndView view=new ModelAndView();
view.setViewName("index");
view.addObject("name","zs");
return view;
}
}
④:视图解析数据,并响应客户端 【index.ftl】 所有的模版文件放于/templates 目录下。
freemark
Hello ${name} from resource freemark!
①:Interpolation 插值 ${ key名 }
//Controller传值 ModleAndView
view.addObject("number",10);//数值
view.addObject("name","zs");//字符串
view.addObject("user",new User(1,"Libai"));//JavaBean
view.addObject("ok",true);//Boolean
view.addObject("date",new Date());//日期
//.ftl页面取值
<#-- 取数字 -->
${number}
<#-- 取字符串 -->
Hello ${name} from resource freemark!
<#-- 取JavaBean的属性 -->
${user.name}
<#-- 根据boolean值获取值/判断 -->
${ok?string('成功','失败')}
<#-- 取日期 ?后面可选date,time,datetime-->
${date?date}
②:FTL tags 标签<# 标签名> #标签名>
<#list> #list>
从List集合中取值。
//Controller传值 list
List list=new ArrayList<>();
list.add("BJ");
list.add("WH");
list.add("HZ");
view.addObject("citys",list);
//.ftl取值
<#list 集合名 as 别名>
${别名}
#list>
从Map中取值
//Controller传值 Map
Map map = new HashMap();
map.put("BJ","北京");
map.put("WH","武汉");
view.addObject("citys",map);
//.ftl取值
<#list citys ? keys as city>
${city} ---> ${citys[city]}
#list>
<#if> #if>
<#if 条件>
// true内容
<#else>
// false内容
#if>
<#include > //包含ftl页面或.html页面
<#include "TemplateFiles/example.ftl">
对于空值处理有下面两种方案:
${ key名!"默认值"}
<#if test??>
值存在
<#else>
不存在
#if>