freemarker之模板开发(数值和类型)

freemarker之模板开发(数值和类型)

----------

 

 

1.数值(略)

 

2.类型

a.标量

标量是最基本,最简单的数值类型,它们可以是:

字符串

数字

布尔值

日期(受java平台限制的)

b.容器

这些值存在的目的是为了包含其他变量,它们仅仅作为容器。被包含的变量通常是子变量。容器类型有:

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

序列:每个子变量通过一个整数来标识。第一个子变量的标识符是0,第二个是1,第三个是2,以此类推。这些数字通常被称为是 子变量的索引。

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

c.子程序

方法和函数:  一个值是方法或函数的时候那么它就可以计算其值,结果取决于传递给它的参数。

如:The average of 3 and 5 is : ${avg(3,5)}

那么方法和函数有什么区别呢?方法是来自于数据模型(它们反射了java对象的方法),而函数是定义在模板内的,但二者可以用同一 种方式来使用。

用户自定义指令: 用户自定义指令(换句话说,就是FreeMarker的标签)这种类型的值也是一种子程序,一种可以复用的模板代码 段。用户自定义指令示例:

 

<@box title="Attention!">
		Too much copy-pasting may leads to maintenance headaches.
	</@box>

  函数/方法和用户自定义指令的比较:按经验来说,如果能够实现,请先用自定义指令而不要用函数/方法。 指令的特征如下: . 输出(返回值)的是标记(HTML,XML等)。主要原因是函数的返回结果可以自动进行xml转义(这是因为${}的特性),而用户自定义指令的输出则不是(这是因为<@...>的特性所致,它的输出假定为是标记,因此 不再转义)。 . 副作用也是很重要的一点,它没有返回值。 . 会进行流程的控制(就像list或if指令那样),但是不能在函数/方法上这么做。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值