FreeMarker struts2 笔记

来源:互联网 发布:淘宝站外活动平台 编辑:程序博客网 时间:2024/05/18 02:04

FreeMarker  struts2 笔记
它是模板引擎
下载路径:www.FreeMarker.org
下载后文件夹的结构如下:
examples是 包含了一个名问 FreeMarker的事例应用
 docs包含了 Freemarker的相关帮助文档
src包含了FreeMarker的 全部源代码 
lib是 核心内库
  

它的变量标识符是:${}或<#>

基本语法:
FTL标签:
<h1>欢迎:${username}</h1>
<#list sequence as item>

1 if else/if else 指令
<#if condition>
...
<#else if condition2>
...
<#else if condition3>
..
<#else>
...
</#if>

2 list break指令
<#list hash_or_seq as item>
..
<#if item="struts2"><#break><#if>
...
</#list>

3 switch case default break指令
<#switch [value]>
<#case [refValue1]>
...
<#break>
<#case refValue2>
..
<#break>
....
<#case refValueN>
...
<#break>
<#default>
...
<#break>
</#switch>

4 include指令
<#include [filename options ] encoding="GBK" parse=true >

5 import指令 
<#import path as hash>
例:<#import "/test.ftl" as t >
<@t.imp title="这是import指令的例子"/>

6 noparse指令  不主力指令里包含的内容
<#noparse>
...
<#noparse>
例:<#noparse>
<#assign score=70>
<#if(score>60)>成绩及格
<#else>成绩不及格
<#if>
<#noparse>

7 compress指令  用来压缩空白行的
<#compress>
...
</#compress>

8  escape  noescape指令  是使被escape指令包围的Interpolation自动加上escape表达式
<#escape identifer as expression>
...
<#noescape >....</#noescape>
...
</#escape>
例:<#escape el as el?html>
用户名:${username}
地址:${address}
年龄:${age}
</#escape>
等同与以下代码:
用户名:${username?html}
地址:${address?html}
年龄:${age?html}
如果在 escape指令中某些Interpolation不需要添加escape表达式,则使用noescape指令
例:<#escape el as el?html>
用户名:${username}
<#noescape>地址:${address}</#noescape>
年龄:${age}
</#escape>
等同与以下代码:
用户名:${username?html}
地址:${address}
年龄:${age?html}

9  assign指令  作用是定义和隐藏变量,前面已经用过,assign指令不仅能定义 或隐藏一个变量,还能定

义或隐藏 变量 ,还能定音和隐藏多个变量
<#assign name=value>
  assign指令  作用是定义和隐藏变量,前面已经用过,assign指令不仅能定义 或隐藏一个变量,还能定

义或隐藏 变量 ,还能定音和隐藏多个变量,若想 定义或隐藏多个变量则使以下语法
<#assign name1=value1 name2=value2  ...  nameN=valueN>
Freemarker允许 assign指令 用in子句将定义的变量放入namespace(命名空间)中,语法如下:
<#assign name in namespace>
 assign 指令 可以把一段输出的 文本作为变量,将变量的值赋给name,语法如下:
<#assign name >
循环部分输出部分
</#assign>
事例代码:
<#assign x>
<#list ["春天","夏天","秋天","冬天"] as reason>
${reason_index}:${reason}
</#list>
</#assign>
${x}
小注意:使用assign指令的时候,建议使用 <#assign x=“${username}”/>这中语法
assign还允许 将name定义成中文 ,事例:
<#assign 顾客=“欢迎你 :${customer}”/>
${顾客}

10 global指令  也是 定义变量  它是定义全局变量
<#global name>

11 setting指令  设置系统的运行环境,name的取值范围有以下几个
local 设置模板语言所用的 国家、语言选项
number_format 设置 格式化输出数字的格式
boolean_format 设置 2个boolean值的 语法格式,默认值是“true”,“false”
date_format,time_format,datetime_format 设置格式化输出日期的格式
url_escaping_charset 设置URL传递参数的字符集编码格式
time_zone 设置格式化输出日期所使用的时区
<# setting name=value>
事例:<#setting number_format="percent"/>
<#assisn num=10/>
${num}
<#setting number_format="currency"/>
${num}
结果为:1000%,¥10.00

12 宏
<#macro name param2 ... paramN>
...
<#nested loopvar1,loopvar2,....,loopvarN>
...
<#rturn >
...
</#macro>

13 t  It  rt  nt 指令
<#t> 去掉左右空白和回车换行
<#It> 去掉左边空白和换行
<#rt> 去掉右边空白和换行
<#nt> 取消上面的效果

14  Interpolation
通用Interpolation 用${expre}表示,数字专用Interpolation 用 #{expre}或 #{expre;format}
事例代码 :
<#setting number_format="percent"/>
<#assign num=10/>
${num}
${num?string.number}
${num?string.percent}
${num?string.cutrrency}
结果为 :1000%  10   1000%   ¥10.00
当 expre为日期时,会根据setting指令确定格式
<#--由setting指令确定-->
<#setting date_format="yyyy-MM-dd HH:mm:ss zzzz">
现在时间为:${nowDate?date?string}<br>
<#--由内置的转换格式确定-->
现在的时间为 :${nowDate?datetime?string.short}<br>
现在的时间为 :${nowDate?datetime?string.long}<br>
<#--自己指定日期-->
现在的时间为 :${nowDate?string("EEEE,MMM d,yy")}<br>
上面的输出为:
现在的时间为 :2008-05-02 09:48:33 中国标准时间
现在的时间为 :08-5-2 上午9:48
现在的时间为 :2008年5月2日 上午09时48分33秒
现在的时间为 :星期五,五月 2,08


15 其他
截取字符串
<#assign name="George Bush">
${name[1]}${name[7]}
${name[1..5]}
结果: eB   George

散列(hash)操作:
<#assign userlist={"username":"sunyang","age":30}+{"address":"cc","age":25}>
username:${userlist.username}
age:${userlist.age}
address:${userlist.address}
结果:
username:sunyang
age:25
address:cc

内建函数:
1)字符串函数:
html:对字符串进行 HTML编码
cap_first 使字符串第一个字母大写
lower_case:将字符串转换成小写
upper_case:将字符串转换成大写
trim:去掉字符串 前后的 空白字符
2)集合函数
size 获得序列中元素的数目
3)int 取得数字的整数部分,如2.8?int的结果为2

原创粉丝点击