首页 > 其他分享 >freemarker使用记录

freemarker使用记录

时间:2023-06-04 17:03:39浏览次数:34  
标签:变量 FreeMarker 记录 url 运算符 使用 字符串 freemarker string


freeMarker语法 [url]http://uule.iteye.com/blog/879566[/url]
Freemarker页面语法 [url]http://jiangsha.iteye.com/blog/372307[/url]


[b]算术运算符[/b]
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


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


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


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


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


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


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


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


[b]获得list的长度[/b]
myList?size

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

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

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


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


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


[b]freemarker如何直接调用java类的某个方法[/b]

将你写的类当成对象假如到MAP中
然后在再用map?key的方法获得该类

maplist.put("typeTool",this);


FREEMARKER


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


[b]freemarker判断是否为空[/b]


<!--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,记录,url,运算符,使用,字符串,freemarker,string
From: https://blog.51cto.com/u_3871599/6411131

相关文章

  • Druid使用起步—在javaWeb项目中配置监控
    配置druid监控springjdbc代码[url]http://19950603.blog.51cto.com/9921553/1616566[/url]AliDruid连接池与监控配置[url]http://langmnm.iteye.com/blog/2112099[/url]阿里巴巴Druid配置监控官方:[url]https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatV......
  • Dropzone JS 使用指南(文件拖拽上传)
    JavaScript文件拖拽上传插件dropzone.js介绍[url]https://www.renfei.org/blog/dropzone-js-introduction.html[/url]DropzoneJS使用指南(文件拖拽上传)[url]http://www.open-open.com/lib/view/open1448610841329.html[/url]后台资料:基于SpringMVC的......
  • J2EE环境变量的其他使用方式
    [color=red]1.[b]System.getProperty()获取tomcat自定义变量[/b][/color][url]http://zwxiaole.iteye.com/blog/1832053[/url]环境tomcat集群有一个定时器为了防止所有集群的服务器都跑定时而出错选择其中一台服务器修改tomcatbin目录下的windows......
  • 使用MD5验证传输文件的完整性和一致性
    在发布更新的时候验证资源完整性是非常重要的,这里我区分为两种,一种是更新资源的完整性,另外一种是远程执行发布任务脚本的一致性,在开发前期如果不注重这个问题的话,很可能在上线前期就会出现一些灾难性问题。第一种,shell中使用md5sum验证传输文件的完整性这个我是用shell中md5sum来做......
  • jQuery使用iframe做tab标签
    jQueryTab插件[url]http://jqueryui.com/tabs/#default[/url][b][color=red]Jquery、tabs、iframe相结合[/color][/b][url]http://blog.sina.com.cn/s/blog_656977f401014oy6.html[/url]使用Jquery中的ui.tabs.js,如果tab中的界面有按钮需要跳转到新的页......
  • Slik-Subversion使用命令行或者Ant获得本地svn的版本号码
    使用命令行Subversion访问项目源文件[url]https://www.open.collab.net/nonav/scdocs/ddUsingSVN_command-line.html.zh-cn[/url]Slik-Subversion安装包地址[url]https://sliksvn.com/pub/[/url]1.安装Slik-Subversion-1.7.19-x64.msi[url]https://sli......
  • jquery mobile的一些使用记录。
    [color=red][b]自定义按钮图标去除按钮阴影/圆角[/b][/color][url]http://bbs.phonegap100.com/thread-218-1-1.html[/url][color=red][b]jQueryMobile自定义按钮图标[/b][/color]JqueryMobile自定义按钮图标[url]http://liningjustsoso.iteye.com/blog/1986769[/url][co......
  • nas使用docker部署导航页Heimdall
    一、下载镜像linuxserver/heimdall:latest二、创建容器文件/文件夹:此处填写在nas上事先创建好的目录位置装载路径:/config类型选读写本地端口其实用自动的就行,不与已有端口冲突即可。启动容器,检查日志是否有报错项。如没有报错,容器应该为运行中的状态。三、打开Heimdall导航页点击快......
  • Debian 11安装搜狗输入法不能正常使用解决记录
    linux版本:DistributorID:DebianDescription: DebianGNU/Linux11(bullseye)Release: 11Codename: bullseyeLinuxming5.10.0-22-amd64#1SMPDebian5.10.178-3(2023-04-22)x86_64GNU/Linux在使用最新的搜狗输入法()时,发现fcitx正常识别,但是通过Ctrl+Space无法正......
  • Docker安装MS SQL Server并使用Navicat远程连接
    MSSQLServer简介MicrosoftSQLServer(简称SQLServer)是由微软公司开发的关系数据库管理系统,它是一个功能强大、性能卓越的企业级数据库平台,用于存储和处理大型数据集、支持高效查询和分析等操作。SQLServer支持广泛的应用程序开发接口(API),包括T-SQL、ADO.NET、ODBC、OLE......