struts2学习笔记(十四)——freemarker的使用

使用FreeMarker

1.       创建Configuration实例,setDirectoryForTemplateLoading

2.       生成Template实例

3.       填充数据,数据就是一个Map对象

4.       调用Template的process方法完成合并

5.       在jsp页面中使用  ${} 访问

FreeMarker模板文件

         由四部分组成:

                   文本

                   注释<#--  -->,不会输出

                   变量  ${}。

                   FTL指令 名字前加#区分

变量规则

通用变量

变量为字符串类型,直接输出表达式结果  ${answer}

变量为数字值,根据默认格式(#setting指定)转换为文本输出,也可以使用内建的字符串格式化单个差值,如

 <#setting number_format=”currency” />

<#assign answer=42 />

${answer}    输出为$42.00

${answer?string.number}  输出为 42

变量为日期型,根据默认格式(#setting指定)转换为文本输出,也可以使用内建的字符串格式化单个差值,如

         ${operatingDate?string(“yyyy-MM-dd HH:mm:ss”) }

         ${operatingDate?string(“EEE, MMM d”) }   //输出为 Tue,Apr 8

变量为bool,

         <#assign foo=true />

         ${foo?string(“yes”,”no”) }   //输出为 yes

数字格式化变量

#{expr; format} 其中format可以是 mX(小数部分最小X位)  MX(小数部分最大X位)

表达式

常量

字符串

         字符串中包括大量符号,可通过 r进行转义,如 ${r”${foo”};

数值

         数值直接输出,不需要引号,如 ${num}

布尔值

         直接使用true或者false,不使用引号

集合

         以方括号包括,类似于js中的数组,如 [1,2,3]

Map

         类似于js中对象,key必须是字符串,如 {“语文”:78,”数学”:83}

变量

顶层变量

         变量名只能是字母、数字、下划线、¥、@、#,且不以数字开头

         ${name}

集合元素

         ${week[2]}   从0开始

         返回子集合   ${week[3..5]}   从第3个到5个

Map元素

         可以包含 javaBean作为value,如 ${root.person.name}

字符串操作

连接: 使用 +, 如  ${“hello, ”+user+” ! ”}

截取字串: ${book[0]}  ${book[1..4]}

连接运算符

将两个集合连接成一个新集合,使用 + ,如 [“星期一”,”星期二”]+[“星期三”]

将两个Map连接成一个新Map,使用 +, 如

         <#assign score={“语文”:86}+{“英文”:54}>

         语文成绩是 ${score.语文}

        

算术运算符

完全支持  +  -  *  /  %,如:

         <#assign x=5>   ${x*x-5}    ${12%10}

运算符两边必须为数字;使用+时,如果一边为字符串,会自动将数字转换为字符串,如 ${3+”5”}  输出为 35

使用内建的int函数对数值取整,如 ${3.2?int} 为3

其他运算符

比较运算符:

         使用> <时,加上(),如 <#if (x>y)>

逻辑运算符

         &&  ||  !

空值处理运算符

         当变量为定义,或在java中定义而值为null,则会在FreeMarker中抛出异常。有两个运算符,!(指定变量的默认值),??(判断某个变量是否存在),如

                   Num!   默认为0 或””    num!23  默认值为23   v??存在则为true,否则为false

内建函数

         支持对字符串、数字、日期、bool、序列、hashMap、xml、和常用的判断语句,一些常用的:

字符串:

Cap_first (第一个单词首字母大写)   substring    uncap_first(首字母小写)

Captitalize(所有单词都大写)  ends_with(以…结尾) 

Index_of   last_index_of   contains    matches(支持正则表达式)

lower_case(字符串全部小写)    upper_case

left_pad(在左边插入空别,直到字符达到 指定长度)

数值的格式化和四舍五入处理

日期的格式化

序列处理:

                   First  last  seq_contains(序列包含)   seq_index_of(第一次出现位置)   size

                   Reverse   sort   sort_by

hashMap处理

                   keys    ${map?keys}  获得键的序列

常用指令

<#if  (age>60)>

<#elseif (age>40) >

<#else>

</#if>

<#switch value>

         <#case  refValue>

         <#break>

         <#default>

                   。。。。

</#switch>

List指令用于迭代输出,可使用item_index代表当前变量的索引值;item_has_next 是否存在下一对象,使用  <#break />跳出迭代,实例如下:

         <#list [1,2,3,4] as num>

                   ${num_index}. ${x}  <#if x_has_next>,</#if>

         </#list>

 

Include

 用于包含指定页

Noparse:   

指令指定FreeMarkers不处理该指令内包含的内容

Escape  noescape 

在html格式中有用

Assign:

用于给变量赋值,如<#assign name=”hello ” />

Setting:

设置freeMarker的运行环境,如<#setting name=value>,其中name可以为 locale  number_format  Boolean_format  date_format  time_format  time_zone

Macro  nested  return:

用于自定义函数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值