Переключение перечисления в freemarker

Я думал, что переключение перечисления будет чем-то очень простым в 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>
...