自由标记:if 语句中的枚举

2022-09-01 18:55:41

在我的if语句中,我想将一个变量(JDK 1.5枚举)与枚举文本进行比较。例如:

<#if type == ProblemStatisticType.BEST_SOLUTION_CHANGED>
  ...
</#if>

但我得到这个例外:

freemarker.core.InvalidReferenceException: Expression ProblemStatisticType is undefined on line 430, column 87 in index.html.ftl.
at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125)
at freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:135)

我该怎么做?


答案 1

不幸的是,FreeMarker语言没有类的概念......但你可以这样做:

<#if type.name() == "BEST_SOLUTION_CHANGED">
  ...
</#if>

或者,如果您信任 枚举类型,则可以省略该部分。toString().name()


答案 2

如果要比较枚举,则应在双引号中指定一个常量枚举值,如下所示:

<#if type == "BEST_SOLUTION_CHANGED">
  ...
</#if>

推荐