2017-09-11 2 views
0

Ich möchte eine dynamische Zeichenfolge an FTL-Makro übergeben. Aber ich möchte nicht, dass der Template-String interpoliert wird, wenn ich das Makro von FTL anrufe. Ich möchte, dass die Template-Zeichenfolge nur in Macro interpoliert wird. Damit kann ich das Makro wiederverwendbar machen, indem ich dynamische Template-Strings als Parameter sende. Da ich neu bei Apache FTL bin, habe ich keine Ahnung, wie ich vorgehen soll.Pause Interpolation der Vorlage Zeichenfolge in FTL

Antwort

0

nicht sicher, was tun Sie erreichen wollen, aber ich denke, so etwas wie dieses:

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

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

, die gedruckt werden:

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

Einige Anmerkungen:

  • I haven‘ t verwendet den Parameter nur als String mit einer Interpolation, aber als Vorlage Fragment (so dass automatisches Escaping, wenn Sie uns e it, wird angewendet, auch könnten Sie #if und so im Wert von s) verwenden.
  • Da das Vorlagenfragment für mehrere Typen in meinem Beispiel ausgewertet wird, habe ich das Ergebnis von ?interpret einer lokalen Variable zugewiesen, andernfalls könnten Sie einfach <@s?interpret /> schreiben.
  • Ab der r vor dem Stringliteral, die Freemarker das muss ${} (und \ entkommt) sagt nicht interpretiert werden.
Verwandte Themen