SpringBoot整合Freemarker模板引擎

1、引入Maven依赖

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-freemarkerartifactId>
dependency>

2、yml配置属性

spring:
  freemarker:
    suffix: .html  #后缀名,默认是.ftl
    content-type: text/html
    enabled: true
    cache: false #缓存配置
    template-loader-path: classpath:/templates/ #模板加载路径 按需配置
    charset: UTF-8 #编码格式
    request-context-attribute: request #请求,类似jsp中的内置对象

request-context-attribute: request,这个属性可以设置freemarker请求对象,其实就是JSP中的内置对象,

设置这个的好处就是我们可以在模版页面中通过${request.contextPath}等方法,直接获取需要的内容。

如果是前台页面模版引擎的方式,存在多个目录,我们可能会在路径设置的时候出现很多问题,相对路径和绝对路径分不清了,所以可以使用这个对象直接使用绝对路径:

可以先设置一个全局变量,方便使用,然后直接使用:

<#assign basPath=request.contextPath >
<script src="${basPath}/bootstrap3/js/jquery-1.11.2.min.js">script>
<script src="${basPath}/bootstrap3/js/bootstrap.min.js">script>    
....

<img src="${basPath}/images/user_icon.png"/>

3、模板常用语法

具体可以参考中文手册:http://freemarker.foofun.cn/

设置变量:<#assign a=10 >

引入其他文件 : <#include "foreground/common/nav.html">

值的获取:

​ 字面量:普通的值(数值、字符串、布尔…): ${str}

​ 对象:${dog.name}

​ map: ${map.key}

循环:

<#list dogList as dog>
    ${dog.name}    获取当前索引====${dog_index}
#list>

判断:

<#if expression>
#if>
<#if (a == 1) || (b == 3) >
<#else>
#if>

空值判断:

1、使用!指定默认值
$(name!"张三")
2、使用??判断是否存在,存在返回true,不存在返回false
<#if name??>
    Welcome ${name}!
#if> 

日期:

内建函数用来指定日期变量中的哪些部分被使用:

  • date:仅日期部分,没有一天当中的时间部分。
  • time:仅一天当中的时间部分,没有日期部分。
  • datetime:日期和时间都在

${cur_time?date}
${cur_time?datetime}
${cur_time?time}
${cur_time?string("yyyy-MM-dd HH:mm:ss")}

你可能感兴趣的:(SpringBoot)