if 指令即判断指令,是常用的FTL指令,freemarker在解析时遇到if会进行判断,条件为真则输出if中间的内容,否则跳过内容不再输出。
模板:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf‐8">
<title>Hello World!</title>
</head>
<body>
Hello ${name}!
<table>
<tr>
<td>序号</td>
<td>姓名</td>
<td>年龄</td>
<td>钱包</td>
</tr>
<#list stuMap?keys as k>
<tr>
<#--_index:得到循环的下标,使用方法是在stu后边加"_index",它的值是从0开始-->
<td>${k_index + 1}</td>
<td <#if stuMap[k].name =='小明'>style="background: cornflowerblue"</#if> >${stuMap[k].name}</td>
<td>${stuMap[k].age}</td>
<td >${stuMap[k].money}</td>
</tr>
</#list>
</table>
</body>
</html>
展示效果:
可以使用 if,elseif ,else指令来条件判断是否跳过模板的一部分,这和程序语言中if是相似的.
语法:
<#if condition>...
<#elseif condition2>...
<#elseif condition3>...
<#else>...
</#if>
说明:
condition,condition2等表达式将被计算成布尔值。
condition-s必须计算成布尔值,否则错误将会终止模板处理。
elseif 和 else必须出现在if的内部,也就是说,在if的开始标签和结束标签之间。
if中可以包含任意数量的elseif(包含0个),而且结束时else时可选的。
示例:
//java中准备数据模型
root.put("random", new Random().nextInt(100));
root.put("user","张三");
------------------------------------------------
<#--if语句测试:-->
${user}是<#if user=="老高">我们的老师</#if>
------------------------------------------------
<#--if else 语句测试:-->
<#if num0 gt 18> <#--不是使用>,大部分时候,freemarker会把>解释成标签结束! -->
及格!
<#else>
不及格!
</#if>
---------------------------------------------------
<#-- if else if else语句测试:-->
<#if random gte 90>
优秀!
<#elseif random gte 80>
良好!
<#else>
一般!
</#if>
----------------------------------------------------
转载自 https://www.cnblogs.com/kjitboy/p/5094142.html
1、算数运算符 FreeMarker表达式中完全支持算术运算,FreeMarker支持的算术运算符包括:+, - , * , / , %
2、逻辑运算符 逻辑运算符有如下几个:
逻辑与:&&
逻辑或:||
逻辑非:!
逻辑运算符只能作用于布尔值,否则将产生错误
3、比较运算符
表达式中支持的比较运算符有如下几个:
1 =或者==:判断两个值是否相等.
2 !=:判断两个值是否不等.
3 >或者gt:判断左边值是否大于右边值
4 >=或者gte:判断左边值是否大于等于右边值
5 <或者lt:判断左边值是否小于右边值
6 <=或者lte:判断左边值是否小于等于右边值
注意: =和!=可以用于字符串,数值和日期来比较是否相等,但=和!=两边必须是相同类型的值,否则会产生错误,而且FreeMarker是精确比较,“x”,"x ","X"是不等的.其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替>会有更好的效果,因为 FreeMarker会把>解释成FTL标签的结束字符,当然,也可以使用括号来避免这种情况,如:<#if (x>y)>