一文搞懂FreeMarker的使用

本文主要介绍FreeMarker的使用
如有需要,可以参考
如有帮助,不忘 点赞

Thymeleaf模板引擎的使用

一、前期预热

1)是什么

FreeMarker是一款用java语言编写的模版引擎,它虽然不是web应用框架,但它很合适作为web应用框架的一个组件。
可以让(网站)程序实现界面与数据分离,业务代码与逻辑代码的分离, 这就大大提升了开发效率,良好的设计也使得代码重用变得更加容易。

2)传统JSP的弊端
  1. 项目目录结构繁琐
  2. 页面不简洁
  3. jsp内置错误页面不能覆盖springboot默认的错误页面
  4. 只能打成war不能打成jar
  5. 内置的jetty服务器不支持jsp
  6. 页面响应较慢,如果数据量较多

二、正文接入

  1. !和 ?的用法

为了处理缺失变量,FreeMarker提供了两个运算符: 用于防止对象不存在而导致的异常

  • ! : 指定缺失变量的默认值
  • ?? : 判断某个变量是否存在,返回boolean值
 ${ item.creatorname ! "xxx" } // 不存在item.creatorname 便使用默认值xxx  
 $ {item.name ? default(‘xxx’) } // 存在item.name 便使用默认值xxx 
/**例子**/
 ${(item.isShow=='Y')?string('是','否') } // 等于y 是 否则 否
 ${item.createTime?string?substring(11,19)  //截取,先判断是否存在,存在则转换为String然后再进行截取
  1. 字符串输出的用法
//从控制层传过来一个key(name),用freemarker接收
//两种方式拼接字符串
${ "Hello ${name} "} 
${ "Hello" + name }
//<#assign > 的用法,定义变量值	
<#assign cname = "xxxx">
${cname}
  1. 运算的用法
<#-- 支持"+""-""*""/""%"运算符 -->
//定义两个变量
<#assign num1 = 2>
<#assign num2 = 3>
//对应运算
"+" : ${num1 + num2}
"-" : ${num1 - num2}
"*" : ${num1 * num2}
"/" : ${num1 / num2}
"%" : ${num1 % num2}
  1. 比较运算的用法
//  > < 两种符号最好用 gte 和 lt 代替,否则容易出错
<#if num1 gte num2 >
${num1}
<#else>
${num2}
</#if>
  1. 字符串截取/区间的用法
//截取
 ${name[x]}		//通过下标直接获取下标对应的字母
 ${name[0..n]}		//起点下标..结尾下标截取字符串
//从一个字符串中截取子串 substring(start,end)	
${‘str’?substring(0,0)} 			//结果为 
${‘str’?substring(0,1)} 			//结果为s 
${‘str’?substring(0,2)} 			//结果为st 
${‘str’?substring(0,3)} 			//结果为str 
//区间
<#assign x = 0..n >  // 不需要用到 [ ] 
  1. 常用函数的用法
<#assign data = "abCd">
第一个字母大写:${data?cap_first}	//输出AbCd
所有字母小写:${data?lower_case}		//输出abcd
所有字母大写:${data?upper_case}		//输出ABCD
<#assign floatData = 12.34>
数值取整数:${floatData?int}				//输出12	
时间格式化:${dateTime?string("yyyy-MM-dd")}
  1. 空判断和集合
//获取集合的长度:${users?size}	
<#if (documents)?? && (documents?size >0)>
    <#list documents as item>
  		... // 遍历
    </#list>
<#else>
	...
</#if>
  1. map集合的用法
//先用<#assign> 创建一个map
<#assign stu={"name" : "张三", "age" : 22}>
//通过 Key获取 Value值:
${ stu["name"]}
//通过 Keys遍历 Map:
<#list stu?keys as key>
Value: ${ stu[key] }
</#list>
//通过Value遍历Map:
<#list stu?values as value>
Value: ${value}
</#list>
  1. include指令
<#include "../../common/common.page.ftl">	// 导入其他页面元素 

在这里插入图片描述

  1. 操作布尔值的用法
//string 用于将布尔值转换为字符串输出
//true转为“true”,false转换为“false”
${test?string (“yes”,”no”)}	//如果布尔值是true,那么返回“yes”,否则返回no
  1. 操作数字的用法
 // c 用于将数字转换为字符串 
${123?c}		// 结果为123 
// number 将字符串转换为数字 
${111.11?number} 结果为111.11 
  1. 日期的用法
//将字符串转为日期
<#--date用来转换为日期-->
<#assign sun = "2019-08-28"/>
${sun?date("yyyy-MM-dd")}		//结果: 2019-8-28  
<#--time用来转换为时间-->
<#assign li = "10:31:21"/>
${li?time("HH:mm:ss")}			//结果:10:31:21
     
<#--datetime用来转换为日期和时间-->
<#assign qian = "2019-08-28 10:31:21"/>
${qian?datetime("yyyy-MM-dd HH:mm:ss")}		//结果:2019-08-28 10:31:21

//将 Long类型的时间戳转为时间
<#--number_to_datetime -->
${item.time?number_to_datetime}		//默认的格式是“yyyy-MM-dd hh:mm:ss”。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值