首页 > 代码库 > freemarker
freemarker
第一章:基本一、if指令 <# if condition> <#else> </#if>二、list指令 <#list sequence as loopVariable>repeatThis</#list> repeatThis 部分将会在给定的 sequence 遍历时在每项中重复,从第一项开始, 一个接着一个。 在所有的重复中, loopVariable 将持有当前项的值。 这个循环变量仅 存在于<#list …>和</#list>标签之间。三、include指令 <#include "/copyright_footer.html">四、联合使用指令 <#list animals as begin> <tr> <td> <#if begin.size == "large"><font size="+1"></#if> ${being.name} <#if begin.size == "large"></font></#if> </td>${begin.price} Euros </tr> </#list>五、不存在的变量: 不允许,但是定义了处理规则之后是可以的。 方式一:指定默认值: ${变量名!默认值} <h1>Welcome ${user!"DefaultValue"}</h1> 方式二:结合if指令使用: <#if user??><h1>Welcome ${user}</h1></#if> 变量名?? :如果存在返回true,否则返回flase。 补充: 关 于 多 级 访 问 的 变 量 , 比 如 animals.python.price , 书 写 代 码 : animals.python.price!0 ,仅当 animals.python 存在而仅仅最后一个子变 量 price 可能不存在(这种情况下我们假设价格是 0)。 如果 animals 或者 python 不存在,那么模板处理过程将会以“未定义的变量”错误而停止。 为了防止这种情况的发生, 可以这样来书写代码(animals.python.price) !0。这种情况下当 animals 或 python 不存在时表达式的结果仍然是 0。 对于 ??也是同样用来的处理这种逻辑的: animals.python.price?? 对比(animals.python.price)?? 来看。第二章: 数值和类型一、数值二、类型 一】标量 1)字符串:简单文本 2)数字:整数和非整数是不区分的,只有单一的数字类型。 3/2=1.5 3)布尔值:代表了逻辑上的对与错。(模版中可以使用true和false) 4)日期:日期变量可以存储和日期/时间相关的数据。 二】容器 1)哈希表:每个子变量都可以通过一个唯一的名称来查找,这个名称是不受限制的字 符串。 哈希表并不确定其中子变量的顺序,也就是说没有第一个变量,第二个变量 这样的说法,变量仅仅是通过名称来访问的。 2)序列:每个子变量通过一个整数来标识, 子变量是有序的,整数通常被称为子变量的索引 子变量的数值类型不需要完全一致。 3)从模板设计者角度来看,集是有限制的序列。不能获取集的大小,也不能通过 索引取出集中的子变量,但是它们仍然可以通过 list 指令来遍历。 三】子程序: 1)方法和函数: 函数/方法也可以是其他函数或方法的参数或者返回值,并可以把它们定义成变量。 区别: 方法:来自于数据模型,反射了java对象的方法 函数:定义于模版内。 可以用同一种方式来使用。第三章 模版一、总体结构 Text文本:照原样输出 interpolation 插值:${变量名} FTL tags 标签: FTL标签和HTML标签很相似,给FreeMarker指示 comments 注释:<#--注释的内容--> 会被FreeMarker忽略掉,更不会在输出内容中显示。 注意: 1)FTL标签不可以在其他FTL标签和插值中使用:<#if <#include ‘foo‘>=‘bar‘>>...</if> 2)注释相反可以放在FTL标签和插值中间使用 eg: ${user <#--The name of user-->} <#List <#-- some comment --> animals as <#--again-->></#list>二、指令 预定义指令:<#directivename parametes>...</#directivename> 自定义指令:<@mydirective parameters>...</@mydirective>三、表达式 插值: ${(5+8)/2} 打印6.5 指令参数 <#if 2 < 3 > 成立(2<3为rue) 一】字符串 1)"some text" 和 ‘some text‘ 形式相等。 2)\为转移字符 eg: \\ \" \‘ 3)表明字符串为原生字符串,加r ${r"${foo}"} ${r"c:\foo\bar"} 二】序列 使用逗号来分隔其中的每个子变量,然后把整个列表放到方括号中 列举:<#list ["winter", "spring", "summer", "autumn" as x]>${x}</#list> 范围: 2..5 等价于[2, 3, 4, 5] 但是使用前者(没有[]符号)会更有效率(内存占用少而且速度快)。
freemarker
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。