2011-08-17 18 views
14

pensé que el cambio a través de una enumeración sería algo muy básico en FreeMarker, por lo que podría escribir algo como:Conmutación enumeración en FreeMarker

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

Pero parece que accessing enums es un asunto feo y complicado. ¿Hay una forma adecuada y limpia de activar los valores de una enumeración? ¿Debo almacenarlo de manera diferente en mi modelo?

Respuesta

15

Se podía usar el valor de cadena de las enumeraciones (al menos con la envoltura de objeto predeterminado, y básicamente con cualquier otra variación BeansWrapper también):

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

O si dependiendo de toString() es un problema (y que podría ser), utilice la siguiente:

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