一、FreeMarker 解决冲突有两种方法:
1、用符号代替,例如:> gt,>= gte,< lt,<= lte
2、加括号 <#if(x>y)>
二、详细说明
在Freemarker中,比较数据的大小时候,要注意大于号(>)的使用。如果不注意,程序就会发生异常信息,如下面的例子:
<#assign x = 4>
<#if x>5 >
x >5
</#if>
以上的方式进行比较,就会发生异常,原因是Freemarker内部的解析处理原因,x>5中的大于号将会跟<#if中的小于号进行配对,导致解析出现问题。针对这种情况,有两种方式解决:
方法一:加上括号。
<#assign x = 4>
<#if (x>5) >
x > 5
</#if>
方法二:使用gt符号。
<#assign x = 4>
<#if x gt 5 >
x > 5
</#if>
总结一下:
使用>=和>的时候有一点小问题。FreeMarker解释>的时候可以把它当作FTL标签的结束符。为了避免这种问题,不得不将表达式放到括号内:<#if (x > y) >,另外,可以使用lt代替<,lte代替<=,gt代替>,gte代替>=。由于历史遗留的原因,FTL也支持lt,lte,gt和gte,使用他们和使用不带反斜杠的效果一样。