2011-08-17 17 views
14

ho pensato che il passaggio su un enum sarebbe qualcosa di molto semplice in FreeMarker, in modo da poter scrivere qualcosa di simile:Commutazione enum in freemarker

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

Ma sembra che accessing enums è una questione brutto e complicato. Esiste un modo corretto e pulito per accendere i valori di un enum? Dovrei archiviarlo diversamente nel mio modello?

risposta

15

Si potrebbe utilizzare il valore stringa delle enumerazioni (almeno con l'involucro oggetto predefinito, e in fondo con qualsiasi altro BeansWrapper variazione troppo):

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

O se a seconda toString() è un problema (e potrebbe essere), utilizzare:

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