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
分享到:
相关推荐
此外,优化模板布局、合理使用FreeMarker的控制结构和内置函数,可以提升页面渲染效率。 通过这个实例,我们可以了解到FreeMarker与Struts2.0集成的基本流程和关键点,这对于理解和实践MVC模式在Web开发中的应用...
3. **模板语言(Template Language)**:FreeMarker的模板语言包括了一系列的指令和内置函数,如`<#if>`用于条件判断,`<#foreach>`用于循环,`<#assign>`用于赋值等。 4. **配置(Configuration)**:FreeMarker的...
学习Struts2,你需要了解Action、配置文件(struts.xml)、拦截器链、结果类型(例如JSP、FreeMarker或Velocity模板)、国际化和验证机制。同时,Struts2与其他框架(如Hibernate进行ORM、Spring进行依赖注入)的...
FreeMarker的核心概念包括变量、控制结构(如if、for)和内置函数,它们用于处理数据模型并生成最终的输出。 Struts2是Apache软件基金会的顶级项目,它继承了Struts1的优点,并引入了更多现代Web开发的需求。Struts...
1. **基础概念**:解释了FreeMarker模板语言的基本元素,如变量、控制结构(if/else、foreach)、内置函数和方法。 2. **数据模型**:描述如何将Java对象绑定到模板,以及如何访问对象的属性。 3. **模板设计**:...
FreeMarker的强大之处在于其丰富的内置函数和指令,比如 `if`、`foreach` 用于条件判断和循环,`include` 用于引入其他模板,`#set` 用于变量赋值等。这些功能使得模板设计更加灵活和高效。 在实际开发中,为了更好...
- FreeMarker提供了许多内置函数,如`?html`(转义HTML特殊字符)、`?replace`(字符串替换)等,以及`<#list>`、`<#nested>`等指令,增强了模板的功能。 7. **模板继承和导入**: - FreeMarker支持模板继承,...
Freemarker支持条件判断、循环结构、内置函数,以及自定义标签,增强了模板的灵活性。与JSP相比,Freemarker通常被认为更简洁、易读且更易于维护。 将这三个框架结合使用,可以构建出高效、灵活的Java Web应用。...
除了这些基本指令外,FreeMarker还提供了一系列内置函数,如`is_collection`, `keys`, `interpret`, `is_macro`, `matches`, `sort`, `html`, `time`, `index_of`, `values`, `right_pad`, `xml`, `date`, `web_safe...
Freemarker是一个强大的模板引擎,常用于JavaEE应用中的视图层处理,尤其与Struts2等MVC框架配合使用,能实现灵活的动态页面...在学习过程中,可以逐步尝试不同的表达式、控制结构和内置功能,加深对Freemarker的理解。
3. **内置函数和指令**:掌握Freemarker提供的各种内置函数,如`?html`用于转义HTML字符,`<#assign>`用于声明和赋值变量。 4. **数据模型**:理解如何创建和组织数据模型,将Java对象映射到模板变量。 5. **模板...
FreeMarker提供了一系列内置函数,如`?html`用于转义HTML特殊字符,`?replace`进行字符串替换,`?upper_case`和`?lower_case`进行大小写转换。此外,还有算术操作符(+、-、*、/、%)、比较操作符(==、!=、<、>、...
- **内置函数**:例如字符串操作、日期格式化等,提供丰富的功能支持。 3. **数据模型与变量** - **对象绑定**:Freemarker模板可以从Java对象中获取数据,这些对象构成了数据模型。 - **作用域**:变量有局部...
- `Freemaker_入门+深入+开发指南+学习笔记.doc`:这份文档提供了从基础到高级的Freemarker学习路径,包括基本语法、模板设计原则和实践案例。 - `freemaeker全面教程.doc`:这份教程全面覆盖了Freemarker的各个...
- 使用Freemarker的内置函数和宏库,如日期处理、字符串操作等,提高代码可读性。 - 合理组织模板目录结构,便于管理和复用。 综上,这个案例展示了如何在Struts2项目中使用Freemarker进行视图层开发,通过模板...
5. **内置函数与指令**: Freemarker提供了一系列内置的函数和指令,如`?html`用于转义HTML特殊字符,`?upper_case`将字符串转化为大写,`<#list>`用于遍历集合等,这些功能极大地丰富了模板的表达能力。 6. **...
FreeMarker支持多种控制结构和内置函数,使得模板设计更加灵活和易于维护。 2. **ognl-2.6.11.jar**:OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置Java对象的属性。在Struts2...
10. **与其他技术的集成**:FreeMarker 能很好地与Spring框架、Struts框架等结合使用,提供Web应用的视图层解决方案。同时,它也可以与各种数据源(如数据库、XML文件)交互,获取数据。 综上所述,FreeMarker是一...
综上,这份Freemarker中文手册涵盖了Freemarker的基本概念、语法、内置函数、与Java的交互方式以及高级特性和最佳实践,是学习和使用Freemarker不可或缺的参考资料。通过深入阅读和实践,开发者能够熟练地运用...
FreeMarker提供了丰富的内置指令和函数,如`#if`、`#foreach`、`#set`等,使得模板可以进行条件判断、循环和变量操作。此外,FreeMarker支持国际化、模板继承、宏定义等功能,增强了其灵活性和可维护性。 总之,SSH...