`

freemarker使用记录

 
阅读更多
freeMarker语法 http://uule.iteye.com/blog/879566
Freemarker页面语法 http://jiangsha.iteye.com/blog/372307


算术运算符
FreeMarker表达式中完全支持算术运算,FreeMarker支持的算术运算符包括:+, - , * , / , % 看如下的代码:
<#assign x=5>
${ x * x - 100 }
${ x /2 }
${ 12 %10 }
输出结果是:
-75   2.5   2
在表达式中使用算术运算符时要注意以下几点:
1,运算符两边的运算数字必须是数字
2,使用+运算符时,如果一边是数字,一边是字符串,就会自动将数字转换为字符串再连接,如:${3 + "5"},结果是:35
使用内建的int函数可对数值取整,如:
<#assign x=5>
${ (x/2)?int }
${ 1.1?int }
${ 1.999?int }
${ -1.1?int }
${ -1.999?int }
结果是:2 1 1 -1 -1


比较运算符
表达式中支持的比较运算符有如下几个:
1,=或者==:判断两个值是否相等.
2,!=:判断两个值是否不等.
3,>或者gt:判断左边值是否大于右边值
4,>=或者gte:判断左边值是否大于等于右边值
5,<或者lt:判断左边值是否小于右边值
6,<=或者lte:判断左边值是否小于等于右边值
注意:=和!=可以用于字符串,数值和日期来比较是否相等,但=和!=两边必须是相同类型的值,否则会产生错误,而且FreeMarker是精确比较,"x","x ","X"是不等的.其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替>会有更好的效果,因为FreeMarker会把>解释成FTL标签的结束字符,当然,也可以使用括号来避免这种情况,如:<#if (x>y)>


逻辑运算符
逻辑运算符有如下几个:
逻辑与:&&
逻辑或:||
逻辑非:!
逻辑运算符只能作用于布尔值,否则将产生错误


内建函数
FreeMarker还提供了一些内建函数来转换输出,可以在任何变量后紧跟?,?后紧跟内建函数,就可以通过内建函数来轮换输出变量.下面是常用的内建的字符串函数:
html:对字符串进行HTML编码
cap_first:使字符串第一个字母大写
lower_case:将字符串转换成小写
upper_case:将字符串转换成大写
trim:去掉字符串前后的空白字符
下面是集合的常用内建函数
size:获取序列中元素的个数
下面是数字值的常用内建函数
int:取得数字的整数部分,结果带符号
例如:
<#assign test="Tom & Jerry">
${test?html}
${test?upper_case?html}
结果是:Tom &amp; Jerry   TOM &amp; JERRY


空值处理运算符
FreeMarker对空值的处理非常严格,FreeMarker的变量必须有值,没有被赋值的变量就会抛出异常,因为FreeMarker未赋值的变量强制出错可以杜绝很多潜在的错误,如缺失潜在的变量命名,或者其他变量错误.这里所说的空值,实际上也包括那些并不存在的变量,对于一个Java的null值而言,我们认为这个变量是存在的,只是它的值为null,但对于FreeMarker模板而言,它无法理解null值,null值和不存在的变量完全相同.
为了处理缺失变量,FreeMarker提供了两个运算符:
!:指定缺失变量的默认值
??:判断某个变量是否存在
其中,!运算符的用法有如下两种:
variable!或variable!defaultValue,第一种用法不给缺失的变量指定默认值,表明默认值是空字符串,长度为0的集合,或者长度为0的Map对象.
使用!指定默认值时,并不要求默认值的类型和变量类型相同.使用??运算符非常简单,它总是返回一个布尔值,用法为:variable??,如果该变量存在,返回true,否则返回false


比较大小和逻辑运算
<#assign x = 4>
<#if (x>5)>
     x >5
</#if>
<#if gridParam.dataRows?? && (gridParam.dataRows?size>0)>
表格记录数大于0
</#if>


以index为循环
                        <#list 1..gridParam.rows as idx>
                            ${idx}
                        </#list>


定义变量和计算
<#assign allTotal=0>
<#assign allTotal=allTotal+detail.realSum>


获得list的长度
myList?size

货币,百分比格式化
三种数字格式: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%

数字格式化, 详细看原文
http://www.netingcn.com/freemarker-number-format.html
${num?string('0.00')}
如果小数点后不足两位,用 0 代替

${num?string('#.##')}
如果小数点后多余两位,就只保留两位,否则输出实际值
输出为:1239765.46


freemarker格式化日期 http://ljhzzyx.blog.163.com/blog/static/383803122013214102540434/
${dateVar?string("yyyy-MM-dd HH:mm:ss zzzz")}



循环读取
<#list sequence as item>
    ...
</#list>
空值判断<#if bookList?size = 0></#list>



freemarker如何直接调用java类的某个方法
http://bbs.csdn.net/topics/260029531
将你写的类当成对象假如到MAP中
然后在再用map?key的方法获得该类
maplist.put("typeTool",this);

FREEMARKER
<#assign name=typeTool.getTypeName(key)>${name}



freemarker判断是否为空
http://www.oschina.net/code/snippet_54124_15295
<!--1\--->
<!--判断aaa是否不为空,eclipse插件老报错。--->
<#if aaa??>
  ${aaa}
</#if>
<!--2\
<#if aaa?if_exists>
  aaa不存在!
</#if>
<!--3\--->
<#if aaa?exists>
  aaa存在,值为${aaa}
</#if>



<#if s?exists>   exists用在逻辑判断
${s?if_exists}   用来打印东西时用到,如果存在打印,不存在打印空字符串.
exp1?exists将会被exp1??代替
exp1?if_exists将会被exp1!代替
exp1?default(exp2)将会被exp1!exp2.
分享到:
评论

相关推荐

    freemarker的分页功能

    - **Freemarker模板中的分页逻辑**:在Freemarker模板中,使用`&lt;#list&gt;`指令遍历分页后的数据列表,并在模板中展示。此外,还需要添加分页导航,包括当前页码显示、上一页/下一页链接等,以便用户操作。 #### 2. ...

    velocity和freemarker的比较

    FreeMarker使用`和`&gt;`作为指令标记,`${}`用于引用变量。 - **优势**:FreeMarker更加强调模板语言的独立性,模板设计者无需了解任何编程语言。它有丰富的内置函数和操作符,对模板的处理效率高。 - **应用场景**...

    struts2+freemarker

    在实际开发中,"freemarker2"这个文件可能是Freemarker的一个示例模板或者配置文件,它可能包含了如何使用Freemarker语法来构建动态网页的具体示例。通过对这个文件的深入学习和实践,开发者可以更熟练地掌握Struts2...

    freemarker各种版本的jar包

    使用这些不同版本的Freemarker jar包时,开发者可以根据项目的具体需求来选择合适的版本。例如,如果项目对性能有较高要求,可能会倾向于选择较新版本,因为它们通常包含性能优化。同时,也要注意与现有项目依赖库的...

    FreeMarker实例教程,手把手教你FreeMarker的方方面面

    - **日志**:介绍了FreeMarker的日志记录机制。 - **在Servlet中使用FreeMarker**:演示了在Servlet环境中集成FreeMarker的方法。 - **为FreeMarker配置安全策略**:提供了确保FreeMarker安全运行的最佳实践。 - **...

    利用FreeMarker生成word文件例子

    在模板中,可以使用FreeMarker语法(如`${}`)来引用数据模型中的变量,这样在运行时这些变量会被实际值替换。 4. **处理模板**:在Java代码中,使用`Template`类加载模板文件,并使用`Configuration`对象的`...

    FreeMarker 手册

    在使用FreeMarker进行开发时,遇到的常见问题如变量的使用、字符集问题、多线程环境下的使用、Bean的包装、日志记录、在Servlet中使用FreeMarker、配置安全策略、与Ant的集成、以及Jython包装器等也在手册中有相应的...

    freemarker学习资料汇总

    此外,还会涉及Freemarker的数据类型、指令、内置函数和宏的使用。 2. **freemarker语法完整版.doc**: 这个文档将深入解析Freemarker的语法特性,包括模板注释、条件语句(如`&lt;#if&gt;`、`&lt;#else&gt;`、`&lt;#choose&gt;`)、...

    FreeMarker 设计指南

    同时,启用FreeMarker的错误报告和日志记录。 四、常见应用场景 1. **电子邮件模板**:FreeMarker可生成个性化的邮件内容,根据用户数据动态填充。 2. **报表生成**:利用FreeMarker的模板和数据模型,可以快速...

    使用FreeMarker生成Html静态文件

    在实际项目中,FreeMarker经常与Spring MVC等框架结合使用,实现更复杂的视图渲染逻辑。 在给定的压缩包文件`freemark`中,可能包含了FreeMarker的相关示例代码、模板文件和其他辅助资源。解压并研究这些文件可以...

    springmvc+mybatis 和一个简单的freemarker代码生成工具

    MyBatis作为一个轻量级的ORM(对象关系映射)框架,它的主要功能是将Java对象与数据库表中的记录进行映射,使得开发者可以使用SQL语句直接操作对象,而无需关注底层的数据访问细节。MyBatis通过XML或注解配置SQL语句...

    Struts2 和freemarker实例

    8. **拦截器的使用**:创建自定义拦截器,实现日志记录、权限检查等附加功能。 9. **Struts2插件**:学习如何使用Struts2提供的插件,如Struts2-dojo-plugin来增强UI交互。 10. **Struts2与FreeMarker的集成**:...

    FreeMarker_Manual_zh_CN.pdf

    在程序开发指南中,还涵盖了诸如变量处理、字符集问题、多线程支持、Bean封装、日志记录、在Servlet中使用、配置安全策略、遗留的XML包装实现、与Ant集成和Jython包装器等高级话题。 在阅读FreeMarker手册后,用户...

    freemarker-2.3.19.jar

    这个JAR文件包含了Freemarker的所有类和资源,使得开发者可以在自己的应用程序中直接引用和使用Freemarker的功能。 在Java应用中,`freemarker-2.3.19.jar`通常会被添加到项目的类路径(classpath)中,以便在运行...

    Struts2+FreeMarker部署

    FreeMarker模板中,我们可以使用`${}`包裹的表达式来输出Java对象的值,使用`&lt;#if&gt;`、`&lt;#else&gt;`、`&lt;#foreach&gt;`等控制结构进行条件判断和循环。例如: ```html ${title} &lt;h1&gt;Welcome to ${siteName}! ${...

    FreeMarker简体中文参考手册

    - **日志**:记录FreeMarker运行时的信息。 - **在servlets中使用FreeMarker**:集成FreeMarker到Web应用程序。 - **为FreeMarker配置安全策略**:提高安全性。 - **遗留的XML包装实现**:兼容旧版本的XML处理方式。...

    FreeMarker 中文教程 用于 FreeMarker 2.3.19

    ### FreeMarker 中文教程知识点概览 #### 一、FreeMarker 概述 ...通过以上知识点的概览,读者可以全面了解 FreeMarker 的基本概念、使用方法及高级特性,为后续深入学习和应用 FreeMarker 奠定坚实的基础。

    FreeMarker_Manual_zh_CN

    - **日志**:日志记录的设置和使用。 - **在Servlet中使用FreeMarker**:集成FreeMarker到Servlet中的步骤。 - **为FreeMarker配置安全策略**:安全性方面的考虑和配置方法。 - **遗留的XML包装实现**:对于旧版本...

    Freemarker中文文档

    FreeMarker中文文档是为开发者提供的技术手册,用来指导开发者如何使用FreeMarker进行模板开发、程序开发,以及XML处理等。 首先,文档的前言部分简单介绍了什么是FreeMarker,也对阅读者应掌握的内容、文档的规约...

Global site tag (gtag.js) - Google Analytics