在freemarker中切换枚举

its*_*dok 14 java enums freemarker

我认为切换枚举将是FreeMarker中非常基本的东西,所以我可以编写如下内容:

<!-- Doesn't work -->
Dear
<#switch gender>
    <#case MALE>
        sir
        <#break>
    <#case FEMALE>
        madam
        <#break>
    <#default>
        sir/madam
<#/switch>
Run Code Online (Sandbox Code Playgroud)

但似乎访问枚举是一个丑陋而复杂的问题.是否有一种正确,干净的方式来打开枚举值?我应该在模特中以不同方式存储它吗?

dde*_*any 15

你可以只使用枚举的字符串值(至少使用默认的对象包装器,基本上也可以使用其他任何BeansWrapper变体):

<#switch gender>
   <#case "MALE"> <#-- note the quotes -->
      sir
      <#break>
...
Run Code Online (Sandbox Code Playgroud)

或者如果依赖于toString()问题(可能是),请使用:

<#switch gender.name()>
   <#case "MALE">
      sir
      <#break>
...
Run Code Online (Sandbox Code Playgroud)