上期lola介绍了FreeMarker语法之表达式(一)这期lola将介绍FreeMarker语法之表达式(二)也是FreeMarker语法之表达式的完结篇。
1.6 算术运算符
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.7 比较运算符
表达式中支持的比较运算符有如下几个:
1. =或者==:判断两个值是否相等.
2. !=:判断两个值是否不等.
3. >或者gt:判断左边值是否大于右边值
4. >=或者gte:判断左边值是否大于等于右边值
5. <或者lt:判断左边值是否小于右边值
6. <=或者lte:判断左边值是否小于等于右边值
注意:=和!=可以用于字符串,数值和日期来比较是否相等,但=和!=两边必须是相同类型的值,否则会产生错误,而且FreeMarker是精确比 较,"x","x ","X"是不等的.其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替>会有更好的效果,因为 FreeMarker会把>解释成FTL标签的结束字符,当然,也可以使用括号来避免这种情况,如:<#if (x>y)>
1.8 逻辑运算符
逻辑运算符有如下几个:
逻辑与:&&
逻辑或:||
逻辑非:!
逻辑运算符只能作用于布尔值,否则将产生错误
1.9 内建函数
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
1.10 空值处理运算符
FreeMarker对空值的处理非常严格,FreeMarker的变量必须有值,没有被赋值的变量就会抛出异常,因为FreeMarker未赋值 的变量强制出错可以杜绝很多潜在的错误,如缺失潜在的变量命名,或者其他变量错误.这里所说的空值,实际上也包括那些并不存在的变量,对于一个Java的 null值而言,我们认为这个变量是存在的,只是它的值为null,但对于FreeMarker模板而言,它无法理解null值,null值和不存在的变 量完全相同.
为了处理缺失变量,FreeMarker提供了两个运算符:
!: 指定缺失变量的默认值 
??: 判断某个变量是否存在
其中,!运算符的用法有如下两种:
variable!或variable!defaultValue,第一种用法不给缺失的变量指定默认值,表明默认值是空字符串,长度为0的集合,或者长度为0的Map对象.
使用!指定默认值时,并不要求默认值的类型和变量类型相同.使用??运算符非常简单,它总是返回一个布尔值,用法为:variable??,如果该变量存在,返回true,否则返回false
1.11 运算符的优先级
FreeMarker中的运算符优先级如下(由高到低排列):
1. 一元运算符:!
2. 内建函数:?
3. 乘除法:*, / , %
4. 加减法:- , +
5. 比较:> , < , >= , <= (lt , lte , gt , gte)
6. 相等:== , = , !=
7. 逻辑与:&&
8. 逻辑或:||
9. 数字范围:..
实际上,我们在开发过程中应该使用括号来严格区分,这样的可读性好,出错少
有关FreeMarker语法之表达式,lola分两次介绍完毕了,接下来将会为大家分享FreeMarker语法的常用指令。

转载于:https://blog.51cto.com/oecpby/439063

FreeMarker语法之表达式(二)相关推荐

  1. Freemarker语法2

    Freemarker语法详解 2018年07月10日 19:43:35 qq_31351071 阅读数:155 FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主 ...

  2. freemarker语法总结

    用了一年多的freemarker,用得多了,碰到的语法就越来越多,觉得有必要做一个总结,总结我所见到且有用的,这个语法总结以后碰到新的freemarker语法也会更新进来,也算是做笔记了,好记性不如烂 ...

  3. [JAVAEE] Thymeleaf 基本语法:常用表达式

    Thymeleaf 基本语法 常用表达式 变量表达式 ${ } 使用方法:th:xx = "${ }" 获取对象属性值给 th:xx . 后台代码: Student s=new S ...

  4. 【H.264/AVC视频编解码技术详解】十九:熵编码算法(5)——H.264的CABAC(上):语法元素的二值化方法...

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

  5. freemarker处理EL表达式

    freemarker处理EL表达式 在使用freemarker生成代码,对页面标记替换的时候,如果需要EL表达式原样输出 比如${param.id} 需要原样输出的话 可以写成${r"${p ...

  6. 【H.264/AVC视频编解码技术详解】十九、熵编码(5):CABAC语法元素的二值化

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

  7. IDEA打开html页面不识别freemarker语法问题

    IDEA中html页面不识别freemarker语法 解决:Ctrl+Alt+S 打开settings --> Editor --> File Types --> FreeMarke ...

  8. 01-Java语法基础(二)-知识

    01-Java语法基础(二)-知识 本章节主要讲解Java中的类&Java程序的入口&变量&数据类型 文章目录 01-Java语法基础(二)-知识 一,Java中的类 二.Ja ...

  9. 五、案例-指令参考-freemarker指令、表达式

    案例-指令参考描述:本人自己测试写了一遍,如有错的地方,懂freemarker的朋友望指点指点! 案例-指令参考 表达式 一. Assign 1.<#assign name1="北京& ...

  10. freeMarker语法

    MyEclipse10 中的两种FreeMarker插件的安装与配置 Freemarker学习笔记(全) freemarker比较大小1 freemarker比较大小2 Freemarker操作字符串 ...

最新文章

  1. 机器学习也能套模版:在线选择模型和参数,一键生成demo
  2. MySQL5.7多源复制的实验
  3. 聊一聊Yarp结合Nacos完成服务发现
  4. python目标检测答案_入门指南:用Python实现实时目标检测(内附代码)
  5. 十四个方法提高博客的页面访问量
  6. 程序设计与算法----递归汉诺塔问题
  7. 阿里移动推送服务端API
  8. 团队项目—第二阶段第五天
  9. 已在该编译单元中定义_LLVM中的pass及其管理机制
  10. 基于RV1126平台imx291分析 --- media部件注册 mipi csi phy
  11. java基础:网络编程(三)UDP编程
  12. 物联网开发语言的探讨
  13. ITSM正向浪涌测试仪
  14. Proof of Stake FAQ
  15. 数学建模常用算法—熵权法(EWM)
  16. sun oracle服务器登管理口,Sun Solaris系统管理命令对照简介
  17. java 宣传语_Java语 言 的 特 点
  18. SQL注入攻击及防御 手动注入+sqlmap自动化注入实战(网络安全学习12)
  19. 图书预订系统:书店向顾客发放订单,顾客将所填订单交由系统处理,系统首先依据图书目录对订单进行检查并对合格订单进行处理,处理过程中根据顾客情况和订单数目将订单分为优先订单与正常订单两种,随时处理优先订单
  20. linux清除历史linux清除history

热门文章

  1. Python : Arrow、Pyarrow库、以及与Julia互读
  2. 操作系统如何恢复到原先状态
  3. (转)后监管时代的资本市场,数字金融能否迎来大爆发?
  4. Julia:提高性能的N个点
  5. 机器学习笔记(二十二):逻辑回归中使用模型正则化
  6. 新兴IT企业特斯拉(八)——自动辅助驾驶
  7. 【优化算法】乌燕鸥优化算法(STOA)【含Matlab源码 1431期】
  8. 【细胞分割】基于matlab GUI阙值+边缘+形态学+种子点图像分割【含Matlab源码 615期】
  9. 【雷达通信】基于matlab GUI雷达定位【含Matlab源码 302期】
  10. git 怎么读_20 分钟教你搞懂 Git!