FreeMarker常用语法
定义变量
<!-- 声明变量 --><#assign name1="刘备" name2="关羽" name3="张飞"><!-- 获取变量的值 -->${name1}、${name2}、${name3}
嵌套页面
<#include "header.ftl">
if
<#if success==true>// 执行</#if>
if-else
<#if success==true>// 执行<#else>// 执行</#if>
if-else if-else
<#if condition>// 执行<#elseif condition2>// 执行<#elseif condition3>// 执行<#else>// 执行</#if>
list遍历循环(注意:list在前)
<#list list as entity>// 下标:${entity_index} 或 ${entity_index+1}// 值:${entity}</#list><#list list as entity>// 下标:${entity_index} 或 ${entity_index+1}// 值:${entity}<#else>// 没有数据</#list>一共${list?size}条记录
判断变量是否存在
<#if aaa??>// aaa变量存在${aaa}<#else>// aaa变量不存在</#if>
三目运算符:变量bbb为空时,返回空字符串
${bbb!''}
freemarker运算符
<#if score gte 60>及格<#elseif score gte 80 && score lte 90>良好<#else>高材生</#if>
FreeMarker的内建函数
<#--将现有时间以时间的格式显示,显示结果如:15:13:05-->${nowDate?time}<#--以日期格式显示,如:2011-4-28-->(date的格式可以在freemarker.properties文件中配置)${nowDate?date}日期格式化${time?string("yyyy-MM-dd")}截取字符串${str?substring(0,2)}indexof的使用${str?last_index_of(",")}split的使用<#list "12,13,14,15"?split(",") as item>${item}</#list>日期格式转换<#if entity.createTime??>${entity.createTime?string('yyyy-MM-dd HH:mm:ss')}</#if>
对null值得处理
!对输出的空值做处理,只输出无返回值输出name的值:${name}。如果name为null,就会报错输出name的值:${name!}。如果name为null,就不会报错,什么也没输出(重点)输出name的值:${name!"默认值"}。如果name为null,就输出”默认值”字符串(重点)输出name的值:${name!100}。如果name为null,就输出100输出user.name的值:${(user.name)!"默认值”},如果user或name为null,就输出默认值(重点)输出user.name的值:${user.name!"默认值”},如果user为null会报错,如果name为null,就输出默认值使用default内建函数来处理:${user.name?default('vakin')}(较繁琐)??测试是否为null,返回boolean值product.color??将只测试color是否为null(product.color)??将测试product和color是否存在nullfreemarker中??和?的区别??是判断对象是否为空,例如:<#if object??>object对象不为空(即object存在)</#if>?后面要加内建函数名,例如:<#if object?exists>object对象不为空(即object存在)</#if><#if str??>${str?string}</#if><#--将str以字符串形式显示--><#if (gzTableInfo.remark)??>我是来测试的</#if>
获取session中保存的值
后台servlet中:
request.getSession().setAttribute(sessionName, obj);
Freemarker中:
<#if Session["aa"]?exists>
${Session["aa"]}
</#if>
<#if Session["userInfo"]?exists>
${Session['userInfo'].email}
</#if>
常用示例
<table id="table" class="table">
<thead>
<tr>
<th class="checkbox"><input type="checkbox" class="fill listen-1" /> </th>
<th style="wid80px;">序号</th>
<th>表名</th>
<th>表述</th>
<th>创建时间</th>
<th>最后修改时间</th>
<th>备注</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<#list pageInfo.list as entity>
<tr>
<td class="checkbox"><input type="checkbox" class="fill listen-1-2" value="${entity.id}" name="id"/> </td>
<td>${entity_index+1}</td>
<td>${entity.tableName}</td>
<td>${entity.chsname}</td>
<td><#if entity.createTime??>${entity.createTime?string('yyyy-MM-dd HH:mm:ss')}</#if></td>
<td><#if entity.updateTime??>${entity.updateTime?string('yyyy-MM-dd HH:mm:ss')}</#if></td>
<td>${entity.remark}</td>
<td>
<#if entity.status==0>
<font color="green">启用</font>
<#else>
<font color="red">废弃</font>
</#if>
</td>
<td>
<button class="button red radius-3" onclick="del(this, '${entity.id}')"><span class="icon-trash-o"></span> 删除</button>
<button class="button indigo radius-3" onclick="edit('${entity.id}')"><span class="icon-edit-2"></span> 编辑</button>
<a class="button green radius-3" href="/table_column_info/list?tableId=${entity.id}"><span class="icon-grid"></span> 字段管理</a>
</td>
</tr>
<#else>
<tr><td colspan="9" style="text-align:center;">暂无记录</td></tr>
</#list>
</tbody>
</table>
springboot配置FreeMarker
pom依赖
<!-- 引入freeMarker的依赖包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
application.yml文件
spring:
freemarker:
request-context-attribute: req
suffix: .html
content-type: text/html
enabled: true
cache: false
template-loader-path: classpath:/templates/
charset: UTF-8
prefer-file-system-access: false
#设置将null置为空字符串
settings:
classicCompatible: true
mvc:
static-path-pattern: /**
文件位置
controller正常写就行
@RequestMapping("/index")
public String toIndex(Model model) {
model.addAttribute("name", "lisi");
return "index";
}
static文件夹里存放静态文件,如css,js等
templates文件夹里存放html页面
