Переключить enum в freemarker

Я думал, что переключение перечисления будет чем-то очень простым в FreeMarker, так что я мог бы написать что-то вроде:

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

Но кажется, что доступ к перечислениям — уродливое и сложное дело. Есть ли правильный, чистый способ включить значения перечисления? Должен ли я хранить его по-другому в моей модели?


person itsadok    schedule 17.08.2011    source источник


Ответы (1)


Вы можете просто использовать строковое значение перечислений (по крайней мере, с оболочкой объекта по умолчанию и, в основном, с любым другим вариантом BeansWrapper):

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

Или, если зависимость от toString() является проблемой (и это может быть), используйте это:

<#switch gender.name()>
   <#case "MALE">
      sir
      <#break>
...
person ddekany    schedule 17.08.2011