博客:JavaEE进阶——FreeMarker模板引擎
------------------------------------------------------
Java模板引擎之Freemarker
慕课网有视频资源,讲的很详细系统。本文仅为学习整理的笔记,如要学习,可到慕课网系统学习。
因为自定义指令,自定义方法等部分,本人并没有学懂。
慕课课程标题:Java模板引擎之Freemarker
如有侵权,请留言告知,本人会隐藏该博客记录。
-------------------------------------------------
Freemarker模板引擎
基于java语言
不是web框架,是个组件
1,定义一个模板文件
2,在freemarker模板文件中写,标记语言。
3,划定学习范围
4,定义学习程度和目标。
5,创建可行计划
6,maven+spring+freemarker项目
7,pom.xml文件依次查看
8,标签
#if
#list
?string()
可以尝试安装freemarker插件
可以通过start.spring.io中创建一个springboot项目
定义变量,输出变量:
使用assign 定义了一个变量var,赋值为:hello spring boot
取值方法:
常见的取值指令:
2)
基本取值:
后台代码:
前台代码:
其他数据类型:
boolan类型比较特殊,如果需要在页面展示,可以string转化下,不能直接在页面输出。
freemarker有配置文件,可以在配置文件中配置常见的format
常见格式化配置:
日期类型比价特殊:
?String()这是freemarker的语法。
变量为null,怎么取值呢?会报错!取值后面加上英文!
默认值:
输出不存在的变量,后台没有定义的:也需要加!
逻辑-赋值和运算
变量运算如:
封装类型:
假如对象和对象的属性都可能为null
假如两个对象都可能为null,整体加上括号,添加英文!
也可以输出富文本:
按普通的 输出值写就可以。brief字符串中包含html代码
假如只想输出文本,不想输出富文本:
需要在使用指令:?html
List集合的遍历
后台代码:
前台代码:
集合Map的遍历
后台代码:
前台代码:既有取key,又有取值
if表达式
else if,else标签是放在<#if></#if>标签内部的。
if else if else
条件判断,会结合list
判断list是否为空,是否存在
判断list中的数据
另一种写法:
检查变量是否存在
总结:进行判断使用:两个??或者?exists
多条件判断:
逻辑或
逻辑与
复合逻辑或
逻辑非
swith语法:
需要加上break,否则会穿透
switch支持字符类型:
新的主题
字符串的操作,集合的操作
自定义函数
自定义指令
自定义函数和自定义指令继承的接口不同
对字符串的操作
拼接和截取:
长度、大小写、indexOf,freemarker没有
替换:
lastIndexOf
自定义函数,sort_int是已经定义好的函数,freemarker的语法风格都是下划线来隔开单词
后台代码:
具体代码:
List排序,内建函数,常用指令:?sort排序
倒序指令,?reverse
长度指令:
获取下标:
自定义指令:
自定义指令以@开头,自定义指令@role,两个入参,user和role
两个返回值,入参是key-value形式,空格隔开
入参和返回值之间用分号;隔开
多个返回值用逗号隔开
需要在xml中配置
后台代码:
以上代码没有截取完整,这一部分,每太高清楚,还需要看教程。
实现顶层接口,实现execute方法
参数都要转为freemarker定义的类型
freemarker常用内建函数:
处理数字的内建函数,处理字符串的内建函数
处理数字的内建函数:
处理List的内建函数:
其他内建函数:
代码演示内建函数,因为这些东西的使用,不用代码难以描述清楚:
字符串分割:
日期转换
数字和list内建函数:
其他内建函数:
高级内容
宏指令
函数指令
图2:
图3:
通过代码讲解:
代码1:定义指令test,一个html片段
代码2:定义带参数的macro指令,同时调用
代码3:有默认参数的macro指令
代码4:有多个参数的macro指令
内容不同的代码片段,nested语法:nested有点像占位符
函数:
回顾和知识总结: