1、取值(插值)指令
常用${var} 语法进行取值;
对null、不存在对象取值${var!}
取包装对象的值,通过“点”语法:${User.name}
取值的时候可以进行计算、赋值
Date类型格式${date?String('yyyy-MM-dd')}
如何转义HTML内容:${var?html}
不能转义Java.Util的Date;可以转义Java.sql的Date;
日期:${dateVar?string('yyyy-MM-dd')}
如果对象为null;
${var!} 、 ${var!'我是默认值'}
不存在的变量:
missing:${sssVar!'我是默认值'}
变量的定义、赋值、运算:
//赋值&运算
a = ${a}
a+100=${a+100}
自定义对象User变量的取值:
${(userObj.name)!}:对整体加一个()括号,则先判断前面的userObj是否存在,然后判断后面的.name是否存在;
${(userObj.name)!‘我是默认值’}:Freemarker对单引号和双引号没有区别。
输出富文本:
user.setBrief("此处编辑富文本!");
${(userObj.brief)}
若想将其中的html语句也输出,则:
${(userObj.brief)!?html}
集合List的遍历:
ModelAndView mv = new ModelAndView("index");
List list = new ArrayList();
list.add("a");
list.add("a");
mv.addObject("myList",list);
前台取值:
${item!}
#list>
集合Map的遍历:
ModelAndView mv = new ModelAndView("index");
Map map = new HashMap();
map.put("a",1);
map.put("b",2);
mv.addObject("map",map);
前台取值:
${key}:${map[key]}
#list>
2、逻辑指令:if、switch
//定义一个变量
//if表达式
var = 99
#if>
var = 99
var != 99
#if>
//如果大于99
var 大于 99
var = 99
var 小于 99
#if>
//加两个??,判断变量是否存在,如果存在,执行里面的语句,否则不执行。
//??也等价于,
${item}
#list>
#if>
if多条件判断:||、&&、!
python or java
#if>
//?length判断字符串长度
python 长度为6
#if>
Switch语法:包含switch,case,break,default;
10
100
other
#switch>
3、字符串、集合操作
//定义两个变量a,b
//连接
${a+b}
//截取
${(a+b)?substring(5,8)}
//长度
${(a+b)?length}
//大写
${(a+b)?upper_case}
//小写
${(a+b)?lower_case}
//index_of
${(a+b)?index_of('w')}
//last_index_of:单词最后一次出现的地方
${(a+b)?last_index_of('0')}
//replace
${(a+b)?replace('o','xx')}
4、自定义函数
自定义函数(整数排序 sort_int)
//未排序
${item},
#list>
//排序
${item},
#list>
//sort_int从哪里来呢?
//controller;
ModelAndView mv = new ModelAndView("index");
mv.addObject("sort_int",new SortMethod());
return mv;
5、list排序内建函数、常用指令
//排序
${item_index}:${item}
#list>
//倒叙
//长度
${myList?size}
//下表
${myList[3]}
6、自定义指令
内置指令用#;
自定义指令用@;
7、freemarker常用内建函数
7.1 处理字符串内建函数
substring、cap_first(首字母变大写的函数)、ends_with(以…结尾)、contains(字符串是否包含目标字符串);
date、datetime、time。如何把字符串转为这三个格式的类型。
starts_with(字符串以…开始)、index_of(字符串所在的位置)、last_index_of(字符串最后所在的位置)、spilt(分割,返回的是数组)、trim(把空和空格去掉)。
7.2 处理数字的内建函数
string、x?string(“0.##”);小数点后几位
round(四舍五入)、floor(把小数点后去掉)、ceiling;
7.3 处理list的内建函数
first(第一个值)、last(最后一个值)、seq_contains(序列是否包含)、seq_index_of(序列位置);
size、reverse、sort、sort_by(如果List是个对象,则可跟进某个属性进行排序)
chunk(将List分块处理)
7.4 其他内建函数
is函数:is_string、is_number、is_method;判断变量类型;
()、has_content函数。
eval求值。
8、macro、function指令
8.1 宏macro、nested、return指令
8.2 函数function、return指令