一、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,使用他们和使用不带反斜杠的效果一样。