FreeMarker数据类型与变量使用(三)

数据类型

FreeMarker支持的数据类型有
- 标量
- 字符串
- 数字
- 布尔值
- 日期:日期变量可以存储和日期/时间相关的数据。一共有三种变化。

    精确到天的日期(通常指的是“日期”)

    每天的时间(不包括日期部分),时间的存储精确到毫秒。

    日期-时间(也称作“时间戳”)。时间部分的存储精确到毫秒。
  • 容器

    • 哈希表:每个子变量都可以通过一个唯一的名称来查找,这个名称是不受限制的字符串。哈希表并不确定其中子变量的顺序,也就是说没有第一个变量,第二个变量这样的说法,变量仅仅是通过名称来访问的

    • 序列:每个子变量通过一个整数来标识。子变量是有顺序的。这些数字通常被称为是子变量的索引。序列通常比较密集,也就是所有的索引,包括最后一个子变量的,它们和子变量都是相关联的,但不是绝对必要的。子变量的数值类型也并不需要完全一致。

    • 集:集是有限制的序列。不能获取集的大小,也不能通过索引取出集中的子变量,但是它们仍然可以通过list指令来遍历。

  • 子程序
    • 方法和函数:方法/函数是第一类值,就像函数化的编程语言。也就是说函数/方法也可以是其他函数或方法的参数或者返回值,并可以把它们定义成变量。两者的区别:方法是来自于数据模型(它们反射了Java对象的方法),而函数是定义在模板内的(使用了函数指令-这也是高级主题),但二者可以用同一种方式来使用。
    • 用自定义指令:即FreeMarker的标签。这种类型的值也是一种子程序,一种可以复用的模板代码段。
  • 其他/很少使用
    • 节点:节点变量代表了树状结构中的一个节点,而且通常是配合XML格式来处理的,这是专业而且更高级的主题。

变量声明

  • 使用赋值指令:assign
  • 简单变量、局部变量、循环变量

代码演示

  • ftl模板文件(src下的ftl包中)

datatype.ftl

<#--数据类型-->
<#--字符串-->
<#assign name="1231">
name:${name}

<#--数字-->
<#assign num=10>
<#assign num=30>
num:${num}

<#--bool值:?c来识别-->
<#assign b=true>
bool:${b?c}

<#--字典-->
<#assign map={"aa":"lxd"}>
map.a:${map.aa}

<#--列表-->
<#assign seq1=[1,2,3,4,5]>
seq1:${seq1[3]}
<#assign seq2=1..5>
seq2:${seq2[3]}
<#assign seq3=5..1>
seq3:${seq3[3]}
  • 测试代码

DataType.java

package lxd.freemarker.base;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;

import freemarker.template.Template;
import freemarker.template.TemplateException;
import lxd.freemarker.utils.FreeMarkerUtil;

/**
 *ftl之数据类型
 * @author lxd
 * @date 2016年11月22日
 */
public class DataType {
    public static void main(String[] args) {
        Template template = FreeMarkerUtil.getTemplate("datatype.ftl");
        //输出到控制台
        Writer writer = new OutputStreamWriter(System.out);//FreeMarkerUtil.getWriter("dataType.html");
        try {

            template.process(null, writer);
            System.out.println("\n datatype ftl success!");
            writer.flush();
            writer.close();

        } catch (TemplateException | IOException e) {

            System.out.println("\n datatype ftl fail!");
            e.printStackTrace();

        }
    }
}
  • 输出结果
getTemplate success!
name:1231

num:30

bool:true

map.a:lxd

seq1:4
seq2:4
seq3:2
 datatype ftl success!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值