parameter concatenar el freemarker jquery-templates

el - concatenar - ¿Cómo generar ${expresión} en Freemarker sin que se interprete?



freemarker string parameter (7)

Estoy tratando de usar Freemarker junto con las plantillas jQuery.

Ambos marcos usan signos de dólar / llaves para identificar expresiones para la sustitución (o como se llaman en freemarker, "interpolaciones"), por ejemplo, ${person.name} .

Entonces, cuando defino una plantilla jQuery con expresiones en esa sintaxis, Freemarker intenta interpretarlas (y falla).

He intentado varias combinaciones de escapar de la secuencia ${ para pasarla a través de Freemarker sin éxito - /${ , /$/{ , $/{ , etc.

Insertar un comentario de marca libre entre el dólar y la moneda (por ejemplo, $<#-- -->{expression} ) SÍ funciona, pero estoy buscando una solución más concisa y elegante.

¿Existe una forma más sencilla de obtener una plantilla de Freemarker para generar la secuencia de caracteres ${ ?


¿Intentaste $$ ?

Encontré en el manual de Freemarker que ${r"${person.name}"} imprimirá ${person.name} sin intentar procesarlo.

Quizás también deberías echar un vistazo a Freemarker escapando freemarker


Además, si tiene secciones más largas sin marca de FreeMarker, puede usar <#noparse>...</#noparse> .

Si tiene este problema mucho, desde FreeMarker 2.3.28 puede configurar FreeMarker para usar [=exp] lugar de ${exp} , configurando la configuración interpolation_syntax en square_bracket (en la API de Java: Configuration cfg; ... cfg.setInterpolationSyntax(Configuration.SQUARE_BRACKET_INTERPOLATION_SYNTAX) ). Entonces ${exp} es solo texto estático para FreeMarker. No confunda esta configuración con la configuración tag_syntax , que también puede tener square_bracket valor de square_bracket , pero es independiente de la sintaxis de interpolación (pero es posible que prefiera configurar ambos con el square_bracket ). Ver también: https://freemarker.apache.org/docs/dgui_misc_alternativesyntax.html


En el caso de que desee utilizar cadenas sin formato para que pueda evitar comillas dobles, apóstrofes, etc., puede hacer lo siguiente:

Imagina que quieres usar la cadena $ {Hola} - "El amigo de mi amigo" dentro de una cadena. No puedes hacer eso con cuerdas en bruto. Lo que he usado que funciona es:

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

No he escapado del apóstrofe desde que usé comillas dobles.


Esto debería imprimir $ {person.name}:

${r"${person.name}"}


Otra opción es usar #include con la opción parse = false. Es decir, coloque sus Plantillas jQuery en la página de inclusión separada y use parse = false para que freemarker no lo intente y analice.

Esta sería una buena opción cuando las plantillas son más grandes y contienen comillas dobles.


Puedo confirmar que el

${r"${item.id}"}

Es la forma correcta como ejemplo.

Así que un ejemplo completo se verá como

<span><a href="/user/user-remove/${r"${item.id}"}"> Remove </a></span>

y la salida será:

<span><a href="/user/user-remove/${item.id}"> Remove </a></span>


Si ${ es su único problema, entonces podría usar la sintaxis alternativa en el complemento de plantillas de jQuery así: {{= person.name}}

Tal vez un poco más limpio que escapar de él.