2011-08-17 9 views
14

Myślałem, że przełączenie na enum byłoby coś bardzo prosty w FreeMarker, abym mógł napisać coś takiego:Przełączanie wyliczenia w freemarker

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

Ale wydaje się, że accessing enums jest brzydki i skomplikowana sprawa. Czy istnieje właściwy, czysty sposób włączania wartości wyliczenia? Czy powinienem przechowywać go inaczej w moim modelu?

Odpowiedz

15

Można po prostu użyć wartości String teksty stałe (przynajmniej owijki domyślnego obiektu, a w zasadzie z każdym innym BeansWrapper zmienności zbyt):

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

Albo jeśli w zależności od toString() jest problemem (i może być), użyj tego:

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