Freemarker的基本语法及入门基础 admin 2023-02-18 07:27:02 篇首语:本文由小编为大家整理,主要介绍了Freemarker的基本语法及入门基础相关的知识,希望对你有一定的参考价值。 哈哈 原谅楼主的懒惰 剩下的假期过完再来补一、freemarker模板文件(*.ftl)的基本组成部分 1. 文本:直接输出的内容部分 2. 注释:不会输出的内容,格式为<#-- 注释内容 --> 3. 取值(插值):代替输出数据模型的部分,格式为${数据模型}或#{数据模型} 4. ftl指令:Freemarker指令,类似于html标记。 内建指令:开始标签:<#directivename parameter> 结束标签:#directivename> 空标签:<#directivename parameter/> 自定义指令:开始标签:<@directivename parameter> 结束标签:@directivename> 空标签:<@directivename parameter/> 至于什么是内建指令,什么是自定义指令 我会在下面叙述到。二、Freemarker语法及使用方法 1. 取值(插值)指令及适用类型: (1) ${var} 适用类型:java中常用的八大基本类型以及我们的String引用类型,但是,freemarker中boolean类型显示时true==yes false==no 示例: 在后台文件中定义变量 String strVar = "世界你好"; int intVar = 10; boolean booVar = true; 在页面中获取变量: String获取: ${strVar} int获取: ${intVar} boolean获取: ${booVar?string("yes","no")} 展示结果: String获取:世界你好 int获取:10 boolean获取:yes (2)${var!} 适用类型:对 null 或者不存在的对象进行取值,可以设置默认值,例:${var!"我是默认值"} 即,有值时显示正常值,无值时显示默认值 示例: 在后台文件中定义变量 String strVar = "世界你好"; String str = null; 在页面中获取变量: String获取: ${strVar!"我是空"} str获取: ${str!} str获取: ${str!"默认"} 展示结果: String获取:世界你好 str获取: str获取:默认 (3)${封装对象.属性} 适用类型:对封装对象进行取值,例:${User.name} 示例: 在后台文件中封装对象User String name = "姓名"; int age = 18; 在页面中获取变量: name获取: ${User.name} age获取: ${User.age} 展示结果: name获取:姓名 age获取:18 (4)${date?String("yyyy-MM-dd")} 适用类型:对日期格式进行取值,在这里我要强调的是,定义Date类型的变量时,java.util.Date无法输出日期,须使用java.sql.Date 示例: 在后台文件中定义变量 java.sql.Date date = new Date().getTime(); java.sql.Date time = new Date().getTime(); java.sql.Date datetime = new Date().getTime(); 在页面中获取变量: date获取: ${date?string("yyyy-MM-dd")} time获取: ${date?string("HH:mm:ss")} datetime获取: ${date?string("yyyy-MM-dd HH:mm:ss")} 展示结果: name获取:姓名 age获取:18 (5)${var?html} 适用类型:转义HTML内容 (6)<#assign num = 100 /> 适用类型:定义变量,支持计算和赋值 (7)对List集合进行取值 <#list list集合 as item> ${item.username} --取值 #list> (8)对Map集合进行取值 <#list map?keys as key> ${key}:${map[key]} #list> 2. 条件判断指令: (1) if 格式:<#if 条件> 输出 #if> (2) if - else 格式:<#if 条件> 输出 <#else> 输出 #if> (3) if - elseif - else 格式:<#if 条件1> 输出 <#elseif 条件2> 输出 <#else> 输出 #if> (4) switch 格式:<#switch var> <#case 条件1> 输出 <#break> <#case 条件2> 输出 <#break> <#default> 输出 #switch> 3. 自定义函数、自定义指令: (1) 自定义函数 实现TemplateMthodModelEx (2) 自定义指令 实现TemplateDirectiveModel 4.常用内建函数、macro(宏指令)、function(函数指令): (1) 常用内建函数 处理字符串: substring 截取字符串,包头不包尾(下标) cap_first 第一个字母大写 end_with 以什么字母结尾 contains 是否包含目标字符串 date datetime time 转换成日期格式 starts_with 以什么字母开头 index_of 返回某个指定的字符串值在字符串中首次出现的位置(下标) last_index_of 获取指定字符出现的最后位置(下标) split 分隔 trim 去两端空格 处理数字: string x?string("0.##") 变成小数点后几位 round 四舍五入 floor 去掉小数点 ceiling 近1 变成整数 处理list: first: 取List值第一个值 last: 取List值最后一个值 seq_contains: 是否包含指定字符 seq_index_of: 指定字符所在位置 size: 集合大小 reverse: 集合倒序排列 sort: 对集合进行排序 sort_by: 根据某一个属性排序 chunk: 分块处理 其他: is_string: 是否为字符类型 is_number: 是否为整数类型 is_method: 是否为方法 (): 判断整个变量 has_content: 判断对象是否为空或不存在 eval: 求值 (2) macro(宏指令) (3) function(函数指令) 以上是关于Freemarker的基本语法及入门基础的主要内容,如果未能解决你的问题,请参考以下文章 硬件 - CPU 缓存 SRAM 与内存 DRAM 的区别 C语言%详解 您可能还会对下面的文章感兴趣: 相关文章 浏览器打不开网址提示“ERR_CONNECTION_TIMED_OUT”错误代码的解决方法 如何安装ocx控件 VMware的虚拟机为啥ip地址老是自动变化 vbyone和EDP区别 linux/debian到底怎么重启和关机 苹果平板键盘被弄到上方去了,如何调回正常? 机器学习常用距离度量 如何查看kindle型号