freemarker

来源:互联网 发布:南联盟大使馆被炸 知乎 编辑:程序博客网 时间:2024/05/16 13:13

1、freemarker的基本操作

获取template对象,这里主要是configuration类去做操作。


输出template的信息:


上面的操作就是最基本的操作freemarker,完成数据与页面的组合。将页面和数据完全的分开处理,


2、可以输出对象




3、常用指令

<#if>

<#list>:循环

<#include>:导入其他文件

<#include "/inc/top.ftl"/>
<#assign>:定义变量


4、空值的处理

freemarker对空值没有处理能力(报错),需要程序员自己处理。

两种逻辑,在为空值时可以再为空时给上默认的值(!);或者判断某个值是否为空(??)


5、基本数据类型

数字

字符串

boolean

日期

布尔和日期都是不能直接输出的,必须转换成字符串或数字来显示。转换的操作就是(?)来实现的,在后面指定为字符串格式,否则报错。


date只能转换日期,即使写成yyyy-mm-dd hh:mm:ss也不能转换日期和时间,需要用datetime。如果纯粹转换时间,就用time

6、字符串连接


一种是类似java的连接操作,一种是直接在freemarker中插入的方式。

7、序列和hash表

序列:这样就完成了序列的定义和输出。序列的拆分可以支持字符串的拆分,xxx(0..8)

hashmap:不能直接遍历map,因为map不是被序列化的对象。可以先取出map中的所有key来遍历keys。【字符串的key,可以用点来取值。】

8、自定义指令


通过macro来定义一个指令,这个指令可以传入参数,以空格来区分。然后通过@来调用这个自定义的指令,参数传入必须同时传入值和名称(否则报错)。
可以再定义的时候定义好初始值。
nested可以将指令中的内容输出出来,并且在指令中传递参数。注意是分号

9、变量


root中的变量就是从后台传入的变量;
在模型中的变量名和模板中的变量名一样的时候,如果直接${XXX}来访问,会把模板中的变量优先展示出来,而模型中的变量被隐藏了起来。为了访问模型中的变量,需要通过.globals来访问。局部变量需要通过local来定义,而不要用assign了,会产生覆盖。

10、名称空间


import和include的不同是,import可以设定名称空间,在需要访问变量时,直接通过as后的名称空间的名称来访问就可以了。
可以再定义一个变量的时候,指定这个变量所在的命名空间。
通过@命名空间来访问命名空间中的自定义指令。