在自由标记中切换枚举

2022-09-03 14:38:57

我认为在FreeMarker中切换枚举是非常基本的东西,这样我就可以写这样的东西:

<!-- Doesn't work -->
Dear
<#switch gender>
    <#case MALE>
        sir
        <#break>
    <#case FEMALE>
        madam
        <#break>
    <#default>
        sir/madam
<#/switch>

但似乎访问枚举是一个丑陋而复杂的问题。有没有一种适当、干净的方法来打开枚举的值?我应该以不同的方式存储在我的模型中吗?


答案 1

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

<#switch gender>
   <#case "MALE"> <#-- note the quotes -->
      sir
      <#break>
...

或者,如果依赖 是一个问题(它可能是),请使用这个:toString()

<#switch gender.name()>
   <#case "MALE">
      sir
      <#break>
...

答案 2