设计广告公司网站建设,铜川市建设集团网站,海南建设监理协会网站,php mysql开发的网站开发案例-指令参考描述#xff1a;本人自己测试写了一遍#xff0c;如有错的地方#xff0c;懂freemarker的朋友望指点指点#xff01; 案例-指令参考 表达式 一、 Assign 1、#assign name1北京 name2上海 name3广东
调用#xf…案例-指令参考描述本人自己测试写了一遍如有错的地方懂freemarker的朋友望指点指点 案例-指令参考 表达式 一、 Assign 1、#assign name1北京 name2上海 name3广东
调用${name1}、${name2}、${name3}
2、#assign name1 消息模拟.. /#assign
调用${name1}
3、#assign name5 in my命名空间 消息模拟.. /#assign
调用#import InstructionReference.ftl as my命名空间
${my.name5} 二、attempt, recover #attempt输出${my.name5}
#recover错误recover block
/#attempt
attempt block任意内容的模板块。这是会被执行的 但是如果期间发生了错误那么这块内容的输出将会回滚之后 recover block 就会被执行。
recover block: 任意内容的模板块。 这个仅在 attempt block 执行期间发生错误时被执行。你可以在这里打印错误信息或其他操。 三、compress 当你使用了对空白、换行的格式(比如HTML或XML) 时压缩指令对于移除多余的空白
#assign x moo \n\n
#compress1 2 3 4 5${x}test onlyI said, test only
/#compress 四、flush #Flush
说明当 FreeMarker 生成输出时它通常不会立即发送到最终接收端 (比如web浏览器或最终的文件)而是会将内容累积在缓冲区发送一个大块的内容。 缓冲区的精确规则不是由 FreeMarker 决定的而是由嵌入的软件决定的。 将缓冲区中累积的内容发送出去称为冲洗。 五、function, return #function name param1 param2 ... paramN...#return returnValue...
/#function
说明
name方法变量的名称(不是表达式)
param1, param2 等 局部变量的名称 存储参数的值(不是表达式)在 号后面和默认值 (是表达式)是可选的。
paramN最后一个参数 可以可选的包含一个尾部省略(...) 这就意味着宏接受可变的参数数量。局部变量 paramN 将是额外参数的序列。
returnValue 计算方法调用值的表达式。
return 指令可以在 #function ... 和 /#function 之间被用在任意位置和任意次数。
没有默认值的参数必须在有默认值参数 (paramNamedefaultValue) 之前
示例1
#function avg x y#return (x y) * 6
/#function
${avg (10, 20)}
示例2
#function avg nums...#local sum 0#list nums as num#local sum sum num/#list#if nums? size 5#return sum / nums? size/#if
/#function
${avg (10, 20, 30, 40, 40)}//参数可任意个 六、global全局变量 1、#global name1北京2
调用${name1}2、#global name1北京 name2上海 name3广东
调用${name1}、${name2}、${name3}3、#global name4消息模拟. /#global
调用${name4}说明一个相同名称的变量存在的话 那么会隐藏由 global 指令创建的变量。 七、if, else, elseif 示例1只有 if 没有 elseif 和 else
#if x 1x is 1
/#if
示例2只有 if 没有 elseif 但是有 else
#if x 1x is 1
#elsex is not 1
/#if
示例3有 if 和两个 elseif 但是没有 else
#if x 1x is 1
#elseif x 2x is 2
#elseif x 3x is 3
/#if
示例4有 if 和三个 elseif 还有 else
#if x 1x is 1
#elseif x 2x is 2
#elseif x 3x is 3
#elseif x 4x is 4
#elsex is not 1 nor 2 nor 3 nor 4
/#if
示例5嵌套 if 指令
#if x 1x is 1#if y 1and y is 1 too#elsebut y is not/#if
#elsex is not 1#if y 0and y is less than 0/#if
/#if 八、import #import path as hash
说明使用参考assign创建一个命名空间引入然后被调用。
path模板的路径。 这是一个算作是字符串的表达式。(换句话说它不是一个固定的字符串 它可以是这样的一些东西比如profile.baseDir /menu.ftl。)
hash访问命名空间的哈希表变量不带引号的名字。不是表达式。 (要引入动态创建的名字)
示例#import /libs/mylib.ftl as my
my.copyright date1999-2002/ 九、include #include path 或 #include path options
path包含文件的路径一个算作是字符串的表达式。(用其他话说 它不用是一个固定的字符串它也可以是像/menu.ftl这样的东西。)
options一个或多个这样的选项 encodingencoding, parseparse
parse 算作是布尔值的表达式(为了向下兼容也接受一部分字符串值)
encoding 算作是字符串的表达式
ignore_missing: 算作是布尔值的表达式
parse如果它为 true 那么被包含的文件将会当作FTL来解析否则整个文件将被视为简单文本 (也就是说不会在其中查找 FreeMarker 的结构)。如果你忽略了这个选项 那么它默认是 true。
encoding被包含文件从包含它的文件继承的编码方式 (实际就是字符集)除非你用这个选项来指定编码方式。 合法的名字有ISO-8859-2UTF-8Shift_JISBig5EUC-KRGB2312。
ignore_missing当为 true模板引用为空时压制错误而 #include ... 不会输出任何东西。当为 false 时如果模板不存在 那么模板处理就会发生错误并停止。如果忽略这个选项那么它的默认值是 false。
说明使用它在你的模板中插入另外一个 FreeMarker 模板文件 (由 path 参数指定)。 被包含模板的输出格式是在 include 标签出现的位置插入的。 被包含的文件和包含它的模板共享变量就像是被复制粘贴进去的一样。
示例
#include /common/copyright.ftl
#include /common/navbar.html parsefalse encodingShift_JIS 十、local #local namevalue
或
#local name1value1 name2value2 ... nameNvalueN
或
#local namecapture this
/#local说明name在root中局部对象的名称。它不是一个表达式。但它可以被写作是字符串形式 如果变量名包含保留字符这是很有用的比如 #local foo-bar 1。 请注意这个字符串没有扩展插值(如${foo})。
赋值操作符也可以简写的赋值操作符之一 ( 等...)和 assign 指令 相似。value 存储的值是表达式。示例它和 assign 指令 类似但是它创建或替换局部变量。 这仅仅在宏和方法的内部定义才会有作用。
#function Str1 nums
#local sum .......#return sum nums
/#function
调用${Str1(测试)} 输出.......测试 十一、macro, nested, return #macro name param1 param2 ... paramN...#nested loopvar1, loopvar2, ..., loopvarN...#return...
/#macro
说明
• name 宏变量的名称它不是表达式。和 顶层变量 的语法相同比如 myMacro 或 my\-macro。 然而它可以被写成字符串的形式如果宏名称中包含保留字符时这是很有用的 比如 #macro foo~bar...。 注意这个字符串没有扩展插值(如${foo})。
• param1 param2等... 局部变量 的名称存储参数的值 (不是表达式)在 号后面和默认值(是表达式)是可选的。 默认值也可以是另外一个参数 比如 #macro section title labeltitle。参数名称和 顶层变量 的语法相同所以有相同的特性和限制。
• paramN 最后一个参数可能会有三个点(...) 这就意味着宏接受可变数量的参数不匹配其它参数的参数可以作为最后一个参数 (也被称作笼统参数)。 当宏被命名参数调用 paramN 将会是包含宏的所有未声明的键/值对的哈希表。当宏被位置参数调用 paramN将是额外参数的序列。 (在宏内部要查找参数可以使用 myCatchAllParam?is_sequence。)
• loopvar1 loopvar2等... 可选的循环变量 的值 是 nested 指令想为嵌套内容创建的。这些都是表达式。
return 和 nested 指令是可选的而且可以在 #macro… 和 /#macro 之间被用在任意位置和任意次数 示例1标准写法 #macro test1 Test text /#macro 调用mtest1/ 示例2带参数的宏(参数可多个) #macro test2 data Test text${data} /#macro 调用test2 dataHello/ 示例3带参数、默认参数(可多个) #macro test3 data1 data22 data33 ${data1} ${data2} ${data3} /#macro 调用test3 data1Hello data2Hello/ test3 data1Hello / 示例4集合迭代元素的宏 #macro list title items p${title? cap_first}: /p ul #list items as x li${x? cap_first} /li /#list /ul /#macro 调用list items[mouse, elephant, python] title标题/ Nested Nested 说明ested 指令执行自定义指令开始和结束标签中间的模板片段。 嵌套的片段可以包含模板中任意合法的内容示例1标准简单
#macro do_twice1. #nested2. #nested
/#macro
调用do_twicesomething/do_twice
输出
示例2嵌套内容创建循环变量
#macro do_thrice#nested 1#nested 2#nested 3
/#macro
调用do_thrice; x${x} Anything.
/do_thricereturn 说明可以在任意位置留下一个宏或函数定义。
#macro test d
This test#returnWill not be printed${d}
/#macro
调用test d/ 十二、noparse(不解析ftl) #noparse...
/#noparse
说明不会在这个指令体中间寻找FTL标签 插值和其他特殊的字符序列除了noparse的结束标记避开对noparse内部ftl的解析。示例1
#noparse#list animals as animaltrtd${animal.name} td${animal. price} Euros/#list
/#noparse 十三、stop #stop
或
#stop reason说明reason停止对模版解析并且抛出一个异常终止原因的信息化消息。是表达式被算做是字符串中止模板处理给出(可选的)错误消息。 不要在普通情况下对结束模板处理使用 FreeMarker 模板的调用者会将它视为失败的模板呈现。 十四、switch, case, default, break #switch 2#case 11#break#case 2 2#break#case 3 3#break
/#switch
说明value refValue1表达式将会计算成相同类型的标量break 和 default 是可选的。 十五、t, lt, rt #t
#lt
#rt
说明指示FreeMarker去忽略标记中行的特定的空白的移除发生在解析阶段
t (整体削减)忽略本行中首和尾的所有空白。
lt (左侧削减)忽略本行中首部所有的空白。
rt (右侧削减)忽略本行中尾部所有的空白。 转载于:https://www.cnblogs.com/xxt19970908/p/5594258.html