- 浏览: 304825 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
di1984HIT:
不错,不错。
Jquery.LazyLoad.js插件修正版下载,实现图片延迟加载特效 -
fncj:
好东西,
freemarker常用技巧 -
xwy55555:
说得很清楚
大型网站框架的演变 -
gxz1989611:
这个东西好,我转载了~~
40 个轻量级 JavaScript 库 -
gxz1989611:
恩,这个标题真是考虑到了SEO啊!!!
这才是真正的JQuery.ajax传递中文参数的解决方法
1. freemarker 简介
1.1. 概述
FreeMarker 允许 Java servlet 保持图形设计同应用程序逻辑的分离,这是通过在模板中密封 HTML 完成的。模板用 servlet 提供的数据动态地生成 HTML 。模板语言是强大的直观的,编译器速度快,输出接近静态 HTML 页面的速度。
FreeMarker 是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯 Java 编写
FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序
虽然 FreeMarker 具有一些编程的能力,但通常由 Java 程序准备要显示的数据,由 FreeMarker 生成页面,通过模板显示准备的数据
FreeMarker 不是一个 Web 应用框架,而适合作为 Web 应用框架一个组件
FreeMarker 与容器无关,因为它并不知道 HTTP 或 Servlet ; FreeMarker 同样可以应用于非 Web 应用程序环境
FreeMarker 更适合作为 Model2 框架(如 Struts )的视图组件,你也可以在模板中使用 JSP 标记库。
2. freemarker 常用技巧
2.1. 截取字符串
有的时候我们在页面中不需要显示那么长的字符串,比如新闻标题,这样用下面的列子就可以自定义显示的长度
< lt . <= lte. > gt. >= gte
<#if jstbqkVO.gzdd?length lt 8>
<a
href>${jstbqkVO.gzdd?default("")}</a>
<#else>
<a href
title="${jstbqkVO.gzdd}">${jstbqkVO.gzdd[0..3]?default("")}...</a>
</#if>
意思就是如果这个字符串的长度小于 8 ,那么就正常显示,反之则取 4 位
2.2. 连接字符串
${"Hello," + user + "!"} // 输出结果为 :hello,gs!
2.3. 日期格式和 boolean 类型,转化为 string 类型
例子 1:
${.now?string("yyyy-MM-dd HH:mm:ss zzzz")}
${.now?string("EEE,MMM d, ''yy")}
${.now?string("EEEE,MMM dd,yyyy, hh:mm:ss a '('zzz')'")}
输出结果如下 :
2003-04-08 21:24:44 Pacific Daylight Time
Tue,Apr 8,'03
Tuesday,April 08,2003,09:24:44 PM (PDT)
例子 2:
<#assign foo=true/>
${foo?string("yes","no")} // 输出结果 :yes
2.4. 排序:
1. 升序 .sort_by()
<#list list?sort_by("
字段
") as x>
</#list>
2. 降序 .sort_by()?reverse
<#list list?sort_by("
字段
")?reverse as x>
</#list>
2.5. 去空格:
${xx?trim}
2.6. 数值精度控制
mX: 小数部分最小 X 位。
MX: 小数部分最大 X 位。
例子 :
<#assign x=2.582/>
<#assign y=4/>
#{x; M2} //2.58
#{y; M2} //4
#{x; m1M2} //2.58
#{y; m1M2} //4.0
2.7. 特殊字符串的转义
\": 双引号
\\: 反斜杠
\r: 回车
\b: 退格键
\': 单引号
\n: 换行
\t:Tab
\f:Form feed
\l:<
\g:>
\a:&
\{:{
\xCode: 直接通过 4 位的十六进制数来指定 Unicode 码 , 输出改 Unicode 对应的字符。
2.8. 顶层变量
* 所谓顶层变量就是直接放在数据模型中的值。
Map root = new HashMap();
root.put("name","yeeku"); //name 是一个顶层对象
* 对于顶层变量 , 直接使用 ${variableName} 来输出变量值
2.9. 集合连接运算符
* 集合连接运算是将两个集合连接成一个新的集合 , 连接集合的运算符是 '+'.
<#list [" 一 "," 二 "," 三 "] + [" 四 "," 五 "," 六 "] as x>
${x}
</#list>
// 输出结果如下 :
一二三四五六
2.10. 算术运算符
* 取整运算
<#assign x=5>
${(x/2)?>int} //2
${1.1?int} //1
${1.999?int} //1
${-1.1?int} //-1
2.11. 比较运算符
=(==) : 判断两个值是否相等
!= :............ 不相等
>(gt) : 判断左边是否大于右边
>=(gte) :.....
<(lt) :.....
<=(lte) :.....
2.12. 逻辑运算符
* 逻辑运算符只能作用于布尔值 , 否则将产生错误 .
逻辑与 :&&
逻辑或 :||
逻辑非 :!
2.13. 内置函数
html:
字符串中所有的特殊
HTML
字符都需要用实体引用来代替(比如
<
代替
<
)
cap_first:
字符串的第一个字母变为大写形式
lower_case:
字符串的小写形式
upper_case:
字符串的大写形式
trim:
去掉字符串首尾的空格
序列使用的内建函数:
size
:序列中元素的个数
数字使用的内建函数:
int:
数字的整数部分(比如
-1.9?int
就是
-1
)
9>.
空值运算符
length: 字符串的长度
string : 把其他格式的数据,转化为 string 类型
例:
${test?html}
${test?upper_case?html}
假设字符串 test 存储 ”Tom & Jerry” ,那么输出为:
Tom & Jerry
TOM & JERRY
${seasons?size}
${seasons[1]?cap_first}
${"horse"?cap_first}
假设 seasons 存储了序列 "winter", "spring", "summer", "autumn" ,那么上面的输出将会是:
4
Spring
Horse
2.14. 运算符优先级
* 推荐使用括号来决定运算优先级 .
1>. 一元运算符 : !
2>. 内建函数 : ?
3>. 乘除法 : *,/,%
4>. 加减法 : +,-
5>. 比较 : <,>,<=,>=(lt,lte,gt,gte)
6>. 相等 : ==(=),!=
7>. 逻辑与 : &&
8>. 逻辑或 : ||
9>. 数字范围 : ..
2.15. freemarker 判断返回值是否为空, null 的方法
对于
null
,或者
miss value
,
freemarker
会报错
!
:
default value operator
,语法结构为:
unsafe_expr!default_expr
,比如
${mouse!"No mouse."}
当
mouse
不存在时,返回
default value
;
(product.color)!"red"
这种方式,能够处理
product
或者
color
为
miss value
的情况;
而
product.color!"red"
将只处理
color
为
miss value
的情况
??: Missing value test operator ,
测试是否为
missing
value
unsafe_expr??
:
product.color??
将只测试
color
是否为
null
(unsafe_expr)??
:
(product.color)??
将测试
product
和
color
是否存在
null
?exists:
旧版本的用法
比如:
<#if mouse??>
Mouse found
<#else>
No mouse found
</#if>
Creating mouse...
<#assign mouse = "Jerry">
<#if mouse??>
Mouse found
<#else>
No mouse found
</#if>
2.16. 在 ftl 中嵌入另一个 controller
<#assign c=JspTaglibs[ "http://java.sun.com/jsp/jstl/core" ] >
<@c.import url= "/product/hotlistByHttp.htm" />
3. FreeMarker 的 编写规范与定义
3.1. 编写的指令必须用小写字母
如 <#if></if> 类似这样的都必须小写标示
3.2. 编写的指令不允许嵌套
如 :
<#list>
<#if flag>…
</#list>
</#if>
这样是不正确的,会引起报错
3.3. 在指令中 ,${..} 只能用于文本部分
下面的代码是错误的:
<#if ${isBig}>Wow!</#if><#if "${isBig}">Wow!</#if>
应该写成:
<#if isBig>Wow!</#if>
3.4. 表达式的约定
字符串
使用单引号或双引号限定
如果包含特殊字符需要转义,如下面的例子:
${"It's \"quoted\" andthis is a backslash: \\"}
It's "quoted" andthis is a backslash: \
数字
直接输入,不需要引号
布尔值
true 和 false ,不使用引号
序列
由逗号分隔的子变量列表,由方括号限定,下面是一个例子:
<#list ["winter", "spring", "summer", "autumn"] as x>${x}</#list>
散列( hash )
由逗号分隔的键 / 值列表,由大括号限定,键和值之间用冒号分隔,下面是一个例子:
{"name":"green mouse", "price":150}
键和值都是表达式,但是键必须是字符串
3.5. 顶层变量的规范
顶层变量: ${variable} ,变量名只能是字母、数字、下划线、 $ 、 @ 和 # 的组合,且不能以数字开头
3.6. 操作符两边必须是数字
因此下面的代码是错误的:
${3 * "5"} <#-- WRONG! -->
发表评论
-
Kaptcha使用
2012-07-04 10:18 1791简单的装备起来很简单,网上一大把,就不说了。 ... -
kaptcha 验证码在spring mvc 中的使用
2012-07-04 10:11 2048... -
Java编程中“为了性能”尽量要做到的一些地方
2012-05-29 16:09 950下面是参考网络资源总结的一些在Java编程中尽可能要做到的 ... -
Spring邮件发送(可带附件,模板,群发,异步发送等功能)
2011-09-20 16:19 2344... -
Quartz
2011-09-14 16:35 1443博客 ... -
eclipse下启动tomcat出现Setting property 'source' to 'org.eclipse.jst.jee.server: '错误的
2011-06-08 16:08 3377在eclipse中启动tomcat时 ... -
Maven常用插件使用说明之deploy
2011-06-02 23:37 5302Maven的deploy插件用于把Maven自动构 ... -
Hudson+Maven+SVN 快速搭建持续集成环境
2011-06-01 10:35 1665hudson 是一个可扩展的持 ... -
struts2 中使用 chain Result 时 actionMessage 和 actionError 未复制的原因
2011-05-24 22:43 2150在网上查询N久,未解决。 一说必须使用 chain Res ... -
Quartz时间规则
2011-03-07 16:26 1943* * * * * ... -
Spring Quartz 任务调度
2011-03-07 16:07 1464关 ... -
可以设置你提交代码是必须写注释,可以规定长度至少为多少
2010-12-23 13:58 3754不少开发员提交修改的时候都不写注释,导致查看历史时很费劲,也不 ... -
Tomcat UTF-8 乱码问题解决办法
2010-12-20 16:13 2193关于java的乱码,一直是双字节字符环境开发者的问题,不同 ... -
eclipse中将java项目转换为web项目
2010-11-19 16:03 28081、进入项目目录,找到.project文件,打开。 2、 ... -
poi 新手教程
2010-10-28 15:10 1235poi 新手教程 Jakarta_POI 使用Ja ... -
Subversion Windows迁移到Linux服务器的步骤
2010-06-01 09:59 1436首先在Windows上,使用svnadmin dump res ... -
JAVA读写Properties文件
2009-04-30 21:05 3337JAVA读写Properties文件 ... -
Tomcat out of memory解决
2009-03-01 23:09 6833Tomcat 默认可以使用的内存为 128MB ,在较大型 ... -
Tomcat加入到系统服务中
2009-01-20 09:55 1468命令行使用sc命令.关于sc命令的详解,请自 ... -
web.xml的配置顺序
2008-12-30 14:31 1018filter,filter-mapping,listener, ...
相关推荐
freemarker_常用内置函数 freemarker_常用内置函数
Freemarker常用语法
freemarker常用使用文档......................................................................
FreeMarker页面制作规范 页面规范的重要性 宏的简介 项目中常用宏的使用方法 页面元素规范 FreeMarker常用技巧
FreeMarker的FTL指令也是模板的重要组成部分,这些指令可实现对数据模型所包含数据的抚今迭代,分支控制.除此之外,还有一些重要的功能,也是通过FTL指令来实现的.
FreeMarker将会输出真实的值来替换大括号内的表达式,这样的表达式被称为 interpolation(插值)。
freemarker常用使用文档.ppt
freemarker常用标签整理,struts2+freemarker做表现层应用,flt中freemarker写法
freemarker的常用技巧:Hashes(散列)操作 Sequences(序列) 内置函数
FreeMarker,FreeMarker
安装freemarker插件(freemarker的eclipse插件) a) 首先下载 freemarker-ide-0.9.14.zip(在这里不用下载了,附件中已经有了) b) 解压后:把hudson.freemarker_ide_0.9.14这个文件放到:eclipse\plugins下面 c) 发现...
FreeMarker
Freemarker简介及标签详解大全 Freemarker简介及标签使用说明
赠送jar包:freemarker-2.3.31.jar; 赠送原API文档:freemarker-2.3.31-javadoc.jar; 赠送源代码:freemarker-2.3.31-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.31.pom; 包含翻译后的API文档:...
freemarker freemarker freemarker freemarker freemarker freemarker freemarker freemarker
赠送jar包:freemarker-2.3.30.jar; 赠送原API文档:freemarker-2.3.30-javadoc.jar; 赠送源代码:freemarker-2.3.30-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.30.pom; 包含翻译后的API文档:...
freemarker\Freemarker教程_中文版