首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

转 freemarker 根本实践

2013-04-02 
转 freemarker 基本实践.#elseif?condition2#elseif?condition3.#else#ifb:switch 形式#switch?va

转 freemarker 基本实践
转 freemarker 根本实践.
<#elseif?condition2>
转 freemarker 根本实践
<#elseif?condition3>
转 freemarker 根本实践转 freemarker 根本实践.
<#else>
转 freemarker 根本实践
<#if
b:switch 形式
<#switch?value>
<#case?refValue1>
?????转 freemarker 根本实践
?????<#break>
<#case?refValue2>
?????转 freemarker 根本实践
?????<#break>
转 freemarker 根本实践
<#case?refValueN>
?????转 freemarker 根本实践
?????<#break>
<#default>
?????转 freemarker 根本实践
</#switch>

4 循环遍历普通list:
<#list?someList?as?item>
?转 freemarker 根本实践
</#list>
?
?
遍历list的前面几项:
<#assign?x=3>
<#list?1..x?as?i>
??${i}
</#list>
?
?
遍历map:
<#list?nameMap.keySet()?as?name>
???${nameMap.get(name)}
</#list>
??或者
<#list?nameMap?keys?as?name>?????
???${nameMap.get(name)}?????????????????????????????????????
</#list>
?
?
list排序输出:
<#list?someList?sort_by(["name"])?as?item>
?????${item.name}
</#list>
?按照属性name进行排序(默认升序)
?
<#list?somelist?sort_by(["name"])?reverse?as?item>
?????${item.name}
</#list>
?按照属性name进行降序排序
?
?
?
list指令还隐含了两个循环变量:item_index:当前迭代项在所有迭代项中的位置,是数字值。
item_has_next:用于判断当前迭代项是否是所有迭代项中的最后一项。
?
map?关于map的key,它必须是String,这个在一定程度上限制了后台程序对于map的表达。


5 其他指令
freemarker??大于??小于?大于等于??小于等于比较符
?
大于?gt
小于?lt
大于等于?gte
小于等于?lte
?
使用方法很简单
<#if?x?gt?1>
转 freemarker 根本实践转 freemarker 根本实践..
</#if>
?
?
struts2环境中freemarker读取后台程序的静态变量和静态方法
?
${stack.findValue("@package.ClassName@method")}
${stack.findValue("@package.ClassName@property")}

6 宏
1?基本用法
宏是和某个变量关联的模板片断,以便在模板中通过用户定义指令使用该变量,下面是一个例子:
<#macro?greet>
??<font?size="+2">Hello?Joe!</font>
</#macro>
调用宏时,与使用freemarker的其他指令类似,只是使用@替代FTL标记中的#:
<@greet/>
?
?
2?在macro指令中可以在宏变量之后定义参数,如:
<#macro?greet?person>
??<font?size="+2">Hello?${person}!</font>
</#macro>
可以这样使用这个宏变量:?<@greet?person="Fred"/>
但是下面的代码具有不同的意思:?<@greet?person=Fred/>
?
这意味着将Fred变量的值传给person参数,该值不仅是字符串,还可以是其它类型,甚至是复杂的表达式。
?
?
宏可以有多参数,下面是一个例子:
<#macro?greet?person?color>
??<font?size="+2"?color="${color}">Hello?${person}!</font>
</#macro>
可以这样使用该宏变量,其中参数的次序是无关的:<@greet?person="Fred"?color="black"/>
?
?
?
可以在定义参数时指定缺省值,否则,在调用宏的时候,必须对所有参数赋值:
?<#macro?greet?person?color="black">
????<font?size="+2"?color="${color}">Hello?${person}!</font>
?</#macro>
注意:宏的参数是局部变量,只能在宏定义中有效。
?
?
3?在宏里嵌套内容
<#nested>指令会执行宏调用指令开始和结束标记之间的模板片断,举一个简单的例子:
<#macro?border>
?<table>
???<tr><td>
??????<#nested>
???</tr></td>
?</table>
</#macro>
执行宏调用:<@border>The?bordered?text</@border?>

?

转自:http://www.blogjava.net/nod0620/articles/325561.html

?

黑色头发:http://heisetoufa.iteye.com

热点排行