您当前的位置: 首页 >  ar

60分布式电商项目 - FreeMarker实用方法

杨林伟 发布时间:2019-07-16 16:00:46 ,浏览量:3

1.FTL指令

assign指令 此指令用于在页面上定义一个变量 1)定义简单类型:


联系人:${linkman}

2)定义对象类型:


电话:${info.mobile} 地址:${info.address}

运行效果: 在这里插入图片描述

include指令 此指令用于模板文件的嵌套 创建模板文件 head.ftl

黑马信息网

我们修改 test.ftl,在模板文件中使用 include 指令引入刚才我们建立的模板


if指令 在模板文件上添加


	你已通过实名认证
 
	你未通过实名认证

在代码中对 str 变量赋值

map.put("success", true);

在 freemarker 的判断中,可以使用= 也可以使用==

list指令 需求,实现商品价格表,如下图: 在这里插入图片描述 1)代码中对变量 goodsList 赋值

List goodsList=new ArrayList();

Map goods1=new HashMap();
goods1.put("name", "苹果");
goods1.put("price", 5.8);

Map goods2=new HashMap();
goods2.put("name", "香蕉");
goods2.put("price", 2.5);

Map goods3=new HashMap();
goods3.put("name", "橘子");
goods3.put("price", 3.2);

goodsList.add(goods1);
goodsList.add(goods2);
goodsList.add(goods3);

map.put("goodsList", goodsList);

2)在模板文件上添加

----商品价格表----

	${goods_index+1} 商品名称: ${goods.name} 价格:${goods.price}

如果想在循环中得到索引,使用循环变量+_index 就可以得到。

2.内建函数

内建函数语法格式: 变量+?+函数名称

获取集合大小 我们通常要得到某个集合的大小,如下图: 在这里插入图片描述我们使用 size 函数来实现,代码如下:

共 ${goodsList?size} 条记录

转换 JSON 字符串为对象 我们通常需要将 json 字符串转换为对象,那如何处理呢?看代码



开户行:${data.bank} 
账号:${data.account}

日期格式化 代码中对变量赋值:

dataModel.put("today", new Date());

在模板文件中加入

当前日期:${today?date} 
当前时间:${today?time}  
当前日期+时间:${today?datetime}  
日期格式化: ${today?string("yyyy 年 MM 月")}

运行效果如下: 在这里插入图片描述

数字转换为字符串 代码中对变量赋值:

map.put("point", 102920122);

修改模板:

累计积分:${point}

页面显示: 在这里插入图片描述 我们会发现数字会以每三位一个分隔符显示,有些时候我们不需要这个分隔符,就需要将数字转换为字符串,使用内建函数 c

累计积分:${point?c}

页面显示效果如下: 在这里插入图片描述

3.空值处理运算符

判断某变量是否存在 用法为:variable??,如果该变量存在,返回 true,否则返回 false


	aaa 变量存在

	aaa 变量不存在

缺失变量默认值 我们除了可以判断是否为空值,也可以使用!对 null 值做转换处理。

在模板文件中加入

${aaa!'-'}

在代码中不对 aaa 赋值,也不会报错了 ,当 aaa 为 null 则返回!后边的内容-

4.运算符

算数运算符 FreeMarker 表达式中完全支持算术运算,FreeMarker 支持的算术运算符包括:+, - , * , / , %

逻辑运算符 逻辑运算符有如下几个:

  • 逻辑与:&&
  • 逻辑或:||
  • 逻辑非:!

逻辑运算符只能作用于布尔值,否则将产生错误

比较运算符

表达式中支持的比较运算符有如下几个:

  • 1 =或者==:判断两个值是否相等.
  • 2 !=:判断两个值是否不等.
  • 3 >或者 gt:判断左边值是否大于右边值
  • 4 >=或者 gte:判断左边值是否大于等于右边值
  • 5 解释成 FTL 标签的结束字符,当然,也可以使用括号来避免这种情况, 如:y)>

关注
打赏
1688896170
查看更多评论

杨林伟

暂无认证

  • 3浏览

    0关注

    3183博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0814s