- 浏览: 194172 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
mao_lu:
cor_ggsearch.init("中国,中国人民 ...
仿google搜索框下拉提示效果 -
aas7612:
, thanks very much
JPA映射文件jpa.reveng.xml的配置问题 -
ghbhaozi:
...
Ext MultiSelect实现双击删除
一、 Sequence的内置函数
1. sequence?first 返回sequence的第一个值。
2. sequence?last 返回sequence的最后一个值。
3. sequence?reverse 将sequence的现有顺序反转,即倒序排序
4. sequence?size 返回sequence的大小
5. sequence?sort 将sequence中的对象转化为字符串后顺序排序
6. sequence?sort_by(value) 按sequence中对象的属性value进行排序
二、 Hash的内置函数
1. hash?keys 返回hash里的所有key,返回结果为sequence
2. hash?values 返回hash里的所有value,返回结果为sequence
例如:
<#assign user={“name”:“hailang”, “sex”:“man”}>
<#assign keys=user?keys>
<#list keys as key>
${key}=${user[key]}
</#list>
三、 操作字符串函数
1. substring(start,end)从一个字符串中截取子串
start:截取子串开始的索引,start必须大于等于0,小于等于end
end: 截取子串的长度,end必须大于等于0,小于等于字符串长度,如果省略该参数,默认为字符串长度。
例子:
${‘str’?substring(0)}à结果为str
${‘str’?substring(1)}à结果为tr
${‘str’?substring(2)}à结果为r
${‘str’?substring(3)}à结果为
${‘str’?substring(0,0)}à结果为
${‘str’?substring(0,1)}à结果为s
${‘str’?substring(0,2)}à结果为st
${‘str’?substring(0,3)}à结果为str
2. cap_first 将字符串中的第一个单词的首字母变为大写。
${‘str’?cap_first}à结果为Str
3. uncap_first将字符串中的第一个单词的首字母变为小写。
${‘Str’?cap_first}à结果为str
4. capitalize将字符串中的所有单词的首字母变为大写
${‘str’? capitalize}à结果为STR
5. date,time,datetime将字符串转换为日期
例如:
<#assign date1=”2009-10-12”?date(“yyyy-MM-dd”)>
<#assign date2=”9:28:20”?time(“HH:mm:ss”)>
<#assign date3=” 2009-10-12 9:28:20”?time(“HH:mm:ss”)>
${date1}à结果为2009-10-12
${date2}à结果为9:28:20
${date3}à结果为2009-10-12 9:28:20
注意:如果指定的字符串格式不正确将引发错误。
6. ends_with 判断某个字符串是否由某个子串结尾,返回布尔值。
${“string”?ends_with(“ing”)?string} 返回结果为true
注意:布尔值必须转换为字符串才能输出
7. html 用于将字符串中的<、>、&和“替换为对应得<>":&
8. index_of(substring,start)在字符串中查找某个子串,返回找到子串的第一个字符的索引,如果没有找到子串,则返回-1。
Start参数用于指定从字符串的那个索引处开始搜索,start为数字值。
如果start大于字符串长度,则start取值等于字符串长度,如果start小于0, 则start取值为0。
${“string”?index_of(“in”) à结果为3
${“string”?index_of(“ab”) à结果为-1
9. length返回字符串的长度 ${“string”?length}à结果为6
10. lower_case将字符串转为小写
${“STRING”?lower_case}à结果为string
11. upper_case将字符串转为大写
${“string”?upper_case}à结果为STRING
12. contains 判断字符中是否包含某个子串。返回布尔值
${“string”?contains(“ing”)?string} à结果为true
注意:布尔值必须转换为字符串才能输出
13. number将字符串转换为数字
${“111.11”?number}à结果为111.11
14. replace用于将字符串中的一部分从左到右替换为另外的字符串。
${“strabg”?replace(“ab”,”in”)} à结果为string
15. split使用指定的分隔符将一个字符串拆分为一组字符串
<#list “This|is|split”?split(“|”) as s>
${s}
</#list>
结果为:
This
is
split
16. trim 删除字符串首尾空格 ${“ String ”?trim} à结果为String
四、 操作数字
1. c 用于将数字转换为字符串
${123?c} à结果为123
2. string用于将数字转换为字符串
Freemarker中预订义了三种数字格式:number,currency(货币)和percent(百分比)其中number为默认的数字格式转换
例如:
<#assign tempNum=20>
${tempNum}
${tempNum?string.number}或${tempNum?string(“number”)} à结果为20
${tempNum?string.currency}或${tempNum?string(“currency”)} à结果为¥20.00
${tempNum?string. percent}或${tempNum?string(“percent”)} à结果为2,000%
五、 操作布尔值
string 用于将布尔值转换为字符串输出
true转为“true”,false转换为“false”
foo?string(“yes”,”no”)如果布尔值是true,那么返回“yes”,否则返回no
==============常用语法=================
三.
EG.一个对象BOOK
1.输出 ${book.name}
空值判断:${book.name?if_exists },
${book.name?default(‘xxx’)}//默认值xxx
${ book.name!"xxx"}//默认值xxx
日期格式:${book.date?string('yyyy-MM-dd')}
数字格式:${book?string.number}--20
${book?string.currency}--<#-- $20.00 -->
${book?string.percent}—<#-- 20% -->
插入布尔值:
<#assign foo=ture />
${foo?string("yes","no")} <#-- yes -->
=============逻辑判断==================
2.
a:
<#if condition>...
<#elseif condit
inc 发布于2007-09-08 16:18:57
ion2>...
<#elseif condition3>......
<#else>...
其中空值判断可以写成<#if book.name?? >
</#if>
b:
<#switch value>
<#case refValue1>
...
<#break>
<#case refValue2>
...
<#break>
...
<#case refValueN>
...
<#break>
<#default>
...
</#switch>
===============循环读取=================
3.
<#list sequence as item>
...
</#list>
空值判断<#if bookList?size = 0></#list>
e.g.
<#list employees as e>
${e_index}. ${e.name}
</#list>
<#if mole?default(0)!=0>
=============用来压缩空白空间和空白的行===============
用例
<#assign x = " moo ">
(<#compress>
1 2 3 4 5
${moo}
test only
I said, test only
)
输出
(1 2 3 4 5
moo
test only
I said, test only)
==============Sequence内置的计数器==============
3. Sequence内置的计数器: xxx_index
用途:显示序号
模板:
<#list employees as e>
${e_index}. ${e.name}
</#list>
输出:
1. Readonly
2. Robbin
==============Sequence内置的分段器=====================
4. Sequence内置的分段器: chunk
用途:某些比较BT的排版需求
模板:
<#assign seq = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']>
<#list seq?chunk(4) as row>
<ul>
<li><#list row as cell>${cell} </#list></li>
</ul>
</#list>
<#list seq?chunk(4, '-') as row>
<tr>
<td><#list row as cell>${cell} </#list></td>
</tr>
</#list>
输出:
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
</ul>
<ul>
<li>e</li>
<li>f</li>
<li>g</li>
<li>h</li>
</ul>
<ul>
<li>i</li>
<li>j</li>
</ul>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
<td>d</td>
</tr>
<tr>
<td>e</td>
<td>f</td>
<td>g</td>
<td>h</td>
</tr>
<tr>
<td>i</td>
<td>j</td>
<td>-</td>
<td>-</td>
</tr>
=====================freemarker的list================================
Scalar String:${scalarString}
Scalar Number:${scalarNumber}
Object is:${scalarObject}
List使用样例-List元素为Scalar对象:
<#list scalarList as value0>
Scalar List值:${value0}
</#list>
List使用样例-List元素为User对象:
<#list userList as listUser>
List对象User Id值:${listUser.userId}
</#list>
Map使用样例-Map Values元素为Scalar :
<#list scalarMap?keys as mykey>
Scalar Map key is :${mykey}
Scalar Map value is:${scalarMap[mykey]}
</#list>
Map使用样例-Map Values元素为User对象:
<#list userMap?keys as key1>
<#assign mapUser="${userMap[key1]}" >
User Object is :${mapUser}
<#--
以下方法有问题
User is :${mapUser.userId} <br>
-->
</#list>
==============FreeMarker中list排序==============
升序:
<#list list?sort_by("time") as v>
</#list>
降序:
<#list list?sort_by("time") as v>
</#list>
===============freemarker在模板中定义变量==============
在模板中定义的变量有三种类型:
plain变量:可以在模板的任何地方访问,包括include指令插入的模板,使用assign指令创建和替换
<#include "/WEB-INF/index/top.html">
==============freemarker.properties配置================
(1)解决输出中文乱码问题:
default_encoding=UTF-8
locale=zh_CN
number_format=#
(2)提高freemarker的性能
template_update_delay=60000
(3)freemarker的标签种类:
${..}
# 代表是FTL tags
<#if ...></#if>
<#list totalList as elementObject>...</#list>
@ ,代表用户自定义的标签
<#-- --> 注释标签,注意不是<!-- -->
=====================将图片整除换行====== <#if (u_index+1)%4=0>当图片超过五个就换行=======
<table width="100%">
<tr>
<td><table width="100%">
<tr>
<#if map["最新-图片"]?exists>
<#list map["最新-图片"] as u>
<#if (u_index+1)%4=0>
<td><table width="70" height="65" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" valign="middle" bgcolor="#6F7074">
<a target="_blank" href="shownews.page?id=${u.id?default("")}&mole=2 "><img src="${u.chartpath?default('')}" width="67" height="41" border="0" /></a></td>
</tr>
<tr>
<td align="center" bgcolor="#6F7074">
<a target="_blank" href="shownews.page?id=${u.id?default("")}&mole=2 " class="tableff">
<@jf.greet title=u.title len=4 /></a>
</td>
</tr>
</table></td></tr><tr >
<#else>
<td><table width="70" height="65" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" valign="middle" bgcolor="#6F7074">
<a target="_blank" href="shownews.page?id=${u.id?default("")}&mole=2 "><img src="${u.chartpath?default('')}" width="67" height="41" border="0" /></a></td>
</tr>
<tr>
<td align="center" bgcolor="#6F7074">
<a target="_blank" href="shownews.page?id=${u.id?default("")}&mole=2 " class="tableff">
<@jf.greet title=u.title len=4 /></a>
</td>
</tr>
</table></td>
</#if>
</#list>
</#if>
</tr>
</table>
</td>
</tr>
</table>
</tr>
</table></td>
</#if>
</#list>
</#if>
</tr>
</table>
</td>
</tr>
</table>
===============================freemarker中在application
${Application.web_title}
在类里:
list=dser.indexvideo(cvo);
if(list.size()!=0){
map.put("最新",list);}
在html静态页里:
<#import "/WEB-INF/ftl/index.ftl" as jf>
(index.ftl
<#macro greet title len>
<#if title?length != 0>
<#if (title?length>len)>
${title[0..len-1]} <#else>
${title?trim}
</#if>
<#else>
${title?default("")}
</#if>
</#macro>
<#--时间比较-->
<#macro vstime start end>
<#if start?default("")==""||end?default("")=="">
--
<#else>
<#assign starts=start?replace("-","") >
<#assign ends=end?replace("-","") >
<#if (starts?number>ends?number)>
<font color="red">以过期</font>
<#else>
未过期
</#if>
</#if>
</#macro>
)
<#if map["最新"]?exists>
<#list map["最新"] as u>
${u.filepath?default('')}
<@jf.greet title=u.title len=6 />
</#list></#if>
发表评论
-
Tomcat启动两次的问题
2011-10-24 16:32 1901这是一个很有意思的问 ... -
Ant 编译部署工程
2011-03-09 14:02 1231<?xml version="1.0" ... -
Flex FTP文件上传
2011-02-16 02:10 2135Flex FTP文件上传原理就是利用Flex Socket组 ... -
flex web ftp上传. 点对点方式 . 支持多文件上传 现打包发布
2011-02-16 02:07 1884因为项目需要做了一个基于 web方式的 ftp客户端上传组件. ... -
镜像服务器
2011-02-12 09:40 999为什么做镜像服务器? ... -
网站镜像技术一
2011-02-12 09:39 891rsync客户命令在对rsync服 ... -
mail服务器
2011-01-24 16:42 1260本文主要解决两个问题:一个是如何将James的用户信息存储到数 ... -
freemarker常见语法大全
2010-12-29 10:57 14422010年04月23日 星期五 08:38 Fre ... -
Java正则表达达式
2010-12-09 16:54 962必很多人都对正则表达式都头疼。今天,我以我的认识,加上网上一些 ... -
正则表达式提取字符
2010-12-09 16:50 845写道 String a="<tr>&l ... -
Spring+JPA部署到Jboss遇到的问题
2010-12-02 01:27 14651.删除跟servlet相关的包 2.删除xerces*. ... -
JFreechart参数配置
2010-11-05 18:37 1392= ChartFactory.createBarChart3D ... -
JVM参数(tomcat)
2010-11-04 09:56 665-Xms1024m-Xmx1512m-XX:PermSize= ... -
JPA中使用构造器查询查询多个对象
2010-09-20 23:31 1194JPQL 支持将查询的属性结果直接作为一个 java cla ... -
Javascript 对象的引用
2010-09-04 16:28 673var a=1var b=a;b=2;alert(a+&quo ... -
can bind a LONG value only for insert into a LONG column
2010-06-27 23:20 1315oracle 驱动不对,就容易报错: can bind a ... -
Tomcat中SSI的配置
2009-08-05 13:42 9611.简介: SSI全称( ... -
JAVA基础问题汇总
2009-07-27 19:08 7371.++前置后置不同带来不同结果 代码 int m=0;i ... -
Java正则表达式入门
2009-06-27 10:33 868众所周知,在程序开发 ... -
读取Web.xml中各种类型参数的方法
2009-06-11 18:36 16921.JSP 讀取 web.xml 的方法:<contex ...
相关推荐
Freemarker学习笔记可以帮助初学者了解,快速掌握Freemarker
FreeMarker学习笔记FreeMarker学习笔记FreeMarker学习笔记
NULL 博文链接:https://zx527291227.iteye.com/blog/1924333
本人辛辛苦苦整理了一些关于FreeMarker的资料,并自己写了一些学习笔记,非常适合首次接触FreeMarker的童鞋
简单介绍freeMarker
springboot学习笔记源码【jsp+jpa+freemarker】
SpringBoot学习笔记所有源码集,包括 集成了freemarker、Servlet、拦截器、拦截器、Filter、静态资源处理、启动加载数据、Springboot 日志、JDBC使用、Springboot JPA、Mybatis、动态数据源、集成swagger、集成Redis...
FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:格式部分,不会输出 3,插值:即${...}或#{...}格式的部分,将使用数据模型中的部分替代输出 4,...
FreeMarker_2.3.23 CHM FreeMarker_2.3.23 CHM FreeMarker_2.3.23 CHM FreeMarker_2.3.23 CHM
JavaEE5学习笔记13-JSF集成Facelets使用经验总结.
支持更多视图技术(JSP(转译java文件,编译成class文件,才可以运行)、(模板技术,html,把数据和模板html一起以流方式输出)FreeMarker、Velocity) 基于AOP(面向切面编程)思想的拦截器机制,更易扩展(不修改源代码的...
此次写这个文章主要是为了记得的一个笔记成分,然后分享一下自己在入门学习是的一些步骤和源码问题,分享给大家一起学习,一起探讨深入
Struts2 必备5个jar包: commons-logging-api-1.1.jar freemarker-2.3.8.jar ognl-2.6.11.jar struts2-core-2.0.8.jar xwork-2.0.3.jar
Freemaker_入门+深入+开发指南+学习笔记.doc FreeMarker标签中文文档.pdf FreeMarker教程.pdf ibatis开发指南(中文版).pdf java web标签大全.CHM jBPM_4.4_开发指南.pdf jquery1.7 中文手册.chm lucene3.0-api.CHM...