您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > Freemarker页面语法
A概念最常用的3个概念sequence序列,对应java里的list、数组等非键值对的集合hash键值对的集合namespace对一个ftl文件的引用,利用这个名字可以访问到该ftl文件的资源B指令if,else,elseif语法Java代码1.#ifcondition2....3.#elseifcondition24....5.#elseifcondition36....7....8.#else9....10./#if用例Freemarker代码1.#ifx=12.xis13./#if4.#ifx=15.xis16.#else7.xisnot18./#ifswitch,case,default,break语法Freemarker代码1.#switchvalue2.#caserefValue13....4.#break5.#caserefValue26....7.#break8....9.#caserefValueN10....11.#break12.#default13....14./#switch用例字符串Freemarker代码1.#switchbeing.size2.#casesmall3.Thiswillbeprocessedifitissmall4.#break5.#casemedium6.Thiswillbeprocessedifitismedium7.#break8.#caselarge9.Thiswillbeprocessedifitislarge10.#break11.#default12.Thiswillbeprocessedifitisneither13./#switch数字Freemarker代码1.#switchx2.#casex=13.14.#casex=25.26.#default7.d8./#switch如果x=1输出12,x=2输出2,x=3输出dlist,break语法Freemarker代码1.#listsequenceasitem2....3.#ifitem=spring#break/#if4....5./#list关键字item_index:是list当前值的下标item_has_next:判断list是否还有值用例Freemarker代码1.#assignseq=[winter,spring,summer,autumn]2.#listseqasx3.${x_index+1}.${x}#ifx_has_next,/#if4./#list输出:1.winter,2.spring,3.summer,4.autumninclude语法Freemarker代码1.#includefilename或则Java代码1.#includefilenameoptionsoptions包含两个属性encoding=GBK编码格式parse=true是否作为ftl语法解析,默认是true,false就是以文本方式引入.注意在ftl文件里布尔值都是直接赋值的如parse=true,而不是parse=true用例/common/copyright.ftl包含内容Ftl代码1.Copyright2001-2002${me}2.3.Allrightsreserved.模板文件Java代码1.#assignme=JuilaSmith2.3.Sometest4.5.Yeah6.___________________________________________________________________________7.8.spanstrongspan#include/common/copyright.ftlencoding=GBK/span9.10.11.12.13.14./strong15.16.17.18./span输出结果:SometestYeah.Copyright2001-2002JuilaSmithAllrightsreserved.Import语法Freemarker代码1.#importpathashash类似于java里的import,它导入文件,然后就可以在当前文件里使用被导入文件里的宏组件用例假设mylib.ftl里定义了宏copyright那么我们在其他模板页面里可以这样使用Freemarker代码1.#import/libs/mylib.ftlasmy2.3.@my.copyrightdate=1999-2002/4.5.#--my在freemarker里被称作namespace--compress语法Freemarker代码1.#compress2....3./#compress用来压缩空白空间和空白的行escape,noescape语法Freemarker代码1.#escapeidentifierasexpression2....3.#noescape.../#noescape4....5./#escape用例主要使用在相似的字符串变量输出,比如某一个模块的所有字符串输出都必须是html安全的,这个时候就可以使用该表达式Freemarker代码1.#escapexasx?html2.Firstname:${firstName}3.#noescapeLastname:${lastName}/#noescape4.Maidenname:${maidenName}5./#escape相同表达式Ftl代码1.Firstname:${firstName?html}2.Lastname:${lastName}3.Maidenname:${maidenName?html}assign语法Freemarker代码1.#assignname=value2.3.#--或则--4.5.#assignname1=value1name2=value2...nameN=valueN6.7.#--或则--8.9.#assignsameasabove...innamespacehash10.11.#--或则--12.13.#assignname14.capturethis15./#assign16.17.#--或则--18.19.#assignnameinnamespacehash20.capturethis21./#assign用例生成变量,并且给变量赋值给seasons赋予序列值Ftl代码1.#assignseasons=[winter,spring,summer,autumn]给变量test加1Ftl代码1.#assigntest=test+1给mynamespage赋予一个变量bgColor,下面可以通过my.bgColor来访问这个变量Ftl代码1.#import/mylib.ftlasmy2.3.#assignbgColor=redinmy将一段输出的文本作为变量保存在x里Ftl代码1.#assignx2.#list1..3asn3.${n}@myMacro/4./#list5./#assign6.7.Numberofwords:${x?word_list?size}8.9.${x}10.11.#assignxHello${user}!/#assignerror12.13.#assignx=Hello${user}!true同时也支持中文赋值,如:Ftl代码1.#assign语法2.java3./#assign4.5.${语法}打印输出:javaglobal语法Freemarker代码1.#globalname=value2.3.#--或则--4.5.#globalname1=value1name2=value2...nameN=valueN6.7.#--或则--8.9.#globalname10.capturethis11./#global全局赋值语法,利用这个语法给变量赋值,那么这个变量在所有的namespace[A1]中是可见的,如果这个变量被当前的assign语法覆盖如#globalx=2#assignx=1在当前页面里x=2将被隐藏,或者通过${.global.x}来访问setting语法Freemarker代码1.#settingname=value用来设置整个系统的一个环境localenumber_formatboolean_formatdate_format,time_format,datetime_formattime_zoneclassic_compatible用例假如当前是匈牙利的设置,然后修改成美国Ftl代码1.${1.2}2.3.#settinglocale=en_US4.5.${1.2}输出1,21.2因为匈牙利是采用,作为十进制的分隔符,美国是用.macro,nested,return语法Freemarker代码1.#macronameparam1param2...paramN2....3.#nestedloopvar1,loopvar2,...,loopvarN4....5.#return6....7./#macro用例Ftl代码1.#macrotestfoobar=Bar[A2]baaz=-12.Testtext,andtheparams:${foo},${bar},${baaz}3./#macro4.5.@testfoo=abar=bbaaz=5*5-2/6.7.@testfoo=abar=b/8.9.@testfoo=abaaz=5*5-2/10.11.@testfoo=a/输出Testtext,andtheparams:a,b,23Testtext,andtheparams:a,b,-1Testtext,andtheparams:a,Bar,23Testtext,andtheparams:a,Bar,-1定义循环输出的宏Ftl代码1.#macrolisttitleitems2.${title?cap_first}:3.#listitemsasx4.*${x?cap_first}5.6./#list7./#macro8.9.@listitems=[mouse,elephant,python]title=Animals/输出结果:Animals:*Mouse*Elephant*Python包含body的宏Ftl代码1.#macrorepeatcount2.#list1..countasx3.#nestedx,x/2,x==count4./#list5./#macro6.7.@repeatcount=4;chalfclast8.${c}.${halfc}#iflastLast!/#if9./@repeat输出1.0.52.13.1.54.2Last!t,lt,rt语法Freemarkder代码1.#t去掉左右空白和回车换行2.3.#lt去掉左边空白和回车换行4.5.#rt去掉右边空白和回车换行6.7.#nt取消上面的效果C一些常用方法或注意事项表达式转换类${expression}计算expression并输出#{expression}数字计算#{expression;format}安格式输出数字format为M和mM表示小数点后最多的位数,m表示小数点后最少的位数如#{121.2322;m2M2}输出121.23数字循环1..5表示从1到5,原型number..number对浮点取整数${123.23?int}输出123给变量默认值$
本文标题:Freemarker页面语法
链接地址:https://www.777doc.com/doc-4821355 .html