2009-10-02 7 views
8

En una plantilla FreeMarker quiero expandir una variable booleana a una cadena como esa:expandir una variable booleana a la cadena "verdadero" o "falso"

<#assign booleanVar = "test".isEmpty() /> 
state: ${booleanVar} <#-- this throws an exception! --> 

Esto es lo que quiero llegar como salida :

state: false 

La única manera que encontré para alcanzar este objetivo por ahora es:

state: <#if booleanVar>true<#else>false</#if> 

¿hay una manera más fácil de hacerlo?

Respuesta

20
booleanVar?string("true", "false") 

Aunque true/false is default, por lo

booleanVar?string 

debería funcionar bien.

+0

Si hago esto, obtengo: "freemarker.core.InvalidReferenceException: Expresión booleanVar $ string no está definida". – tangens

+0

Releí ese enlace ... ¿Cambié el $ a? por ejemplo. No sé freemarker :) – tsilb

+1

A partir de FreeMarker 2.3.20, debe usar '$ {booleanVar? C}'. Simplemente escribir '$ {booleanVar? String}' es peligroso, ya que se puede cambiar el formato predeterminado. Ver mi respuesta para más detalles. – ddekany

4

A partir de FreeMarker 2.3.20, si desea imprimir verdadero/falso (porque se está generando JavaScript o tal), escribir ${booleanVar?c} (?c para "Formato de equipo", también se utiliza para los números). ${booleanVar?string} es peligroso para los que, como alguien puede establecer la configuración de boolean_format a yes,no o algo ... (Por cierto, en ese caso ${booleanVar} también funcionará en 2.3.20, y se obtiene yes y no.)

Ver: http://freemarker.org/docs/ref_builtins_boolean.html#ref_builtin_c_boolean

Cuestiones relacionadas