2017-09-11 2 views
0

Je souhaite transmettre une chaîne dynamique à la macro FTL. Mais je ne veux pas que la chaîne de template soit interpolée quand j'appelle la macro de FTL. Je veux que la chaîne de modèle soit interpolée dans Macro seulement. Alors que je peux rendre la macro réutilisable en envoyant des chaînes de modèles dynamiques en tant que paramètre. Comme je suis nouveau à Apache FTL, je ne sais pas trop comment procéder.Interrompre l'interpolation de la chaîne du modèle dans FTL

Répondre

0

Je ne sais pas ce que voulez-vous atteindre, mais je pense que quelque chose comme ceci:

<#macro m s> 
    <#local parsedS = s?interpret> 
    <#list ['John Doe', 'Jane Doe'] as name> 
    <p><@parsedS /> 
    </#list> 
</#macro> 

<@m r"Hello ${name}!" /> 

qui imprimera:

<p>Hello John Doe! 
<p>Hello Jane Doe! 

Quelques notes:

  • refuge I » t juste utilisé le paramètre comme une chaîne avec une interpolation, mais comme un fragment de modèle (de sorte que l'échappement automatique, si vous nous e il, sera appliqué, vous pouvez également utiliser #if et tel dans la valeur de s).
  • Comme le fragment de modèle est évalué pour plusieurs types dans mon exemple , j'ai affecté le résultat de ?interpret à une variable locale , sinon vous pourriez simplement écrire <@s?interpret />.
  • Comme de la r avant la chaîne littérale, qui indique que FreeMarker ${} (et \ échappe) ne doit pas être interprété.