在Freemarker中切换枚举类型

15

我认为在FreeMarker中切换枚举应该是非常基本的操作,所以我可以写出下面这样的代码:

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

但是似乎访问枚举是一件丑陋而复杂的事情。有没有一种适当、清晰的方法来切换枚举的值?我应该在我的模型中以不同的方式存储它吗?

1个回答

16
你可以直接使用枚举的字符串值(至少在默认对象包装器中,基本上也适用于任何其他BeansWrapper变体):
<#switch gender>
   <#case "MALE"> <#-- note the quotes -->
      sir
      <#break>
...

如果依赖于toString()可能会有问题(这是可能的),可以使用以下方法:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接