2009-10-29 16 views
5

Estoy usando freemarker para generar una plantilla de marcación libre. Pero necesito alguna forma de escapar de las etiquetas de freemarker.Freemarker escaping freemarker

¿Cómo escapo una etiqueta <#list> o ${expression}?

Respuesta

7

Estoy usando la función alternative syntax. Comienzo la plantilla con [#ftl] y uso esta sintaxis.

Para las expresiones que utilizo la función literal de cadena: ${r"${expression}"}

+0

Uso el mismo enfoque, que es un poco feo pero funciona. Se pone realmente desagradable si uso una variable de la plantilla externa para definir el acceso a la propiedad de una variable de la plantilla generada, que se ve así: $ {r "$ {entity."} $ {PropertyDescriptor.name}} y termina como $ {entity.creationDate} dado que el propertyDescriptor tiene el nombre "creationDate". –

8

También es posible usar: ${"$"}{expression} si se encuentra el confuso {} anidación.

+0

Buena idea, creo que esto apoya la legibilidad mejor –

+0

La mejor de todas las alternativas sugeridas hasta la fecha. Me preocupa que no haya una manera más simple, como '\ $' - pero no la hay. Esta es una buena aproximación de la elegancia ... – Stevel

0

En el caso cuando se desea utilizar cadenas no primas para que pueda escapar comillas, apóstrofes, etc., puede hacer lo siguiente:

Imagine que desea utilizar la cadena $ {Hola} - "Amigo de mi amigo" dentro de una cadena. No puedes hacer eso con cadenas sin formato. Lo que he usado que funciona es:

${"\x0024{Hello}-\"My friend's friend\""} 

No he escapado del apóstrofo ya que utilicé comillas dobles.