7
votes

FreeMarker échappant à Freemarker

J'utilise Freemarker pour générer un modèle Freemarker. Mais j'ai besoin d'un moyen d'échapper à des étiquettes de Freemarker.

Comment puis-je échapper à une liste <# liste> tag ou un $ {expression} ?


0 commentaires

4 Réponses :


7
votes

J'utilise le Syntaxe alternative fonctionnalité. Je démarre le modèle avec [#ftl] et utilisez cette syntaxe.

Pour les expressions, j'utilise la fonction littérale à chaîne: $ {r "$ {expression}"}


1 commentaires

J'utilise la même approche, qui est un peu laide mais fonctionne. Il devient vraiment méchant si j'utilise une variable du modèle externe pour définir l'accès de la propriété d'une variable du modèle généré, qui ressemble à ceci: $ {r "$ {entité."}}}}}}} Et se termine Comme $ {entity.creationDate} Étant donné que la propriétéDescriptor a le nom "CreationDate".



9
votes

Vous pouvez également utiliser: $ {"$"} {expression} si vous trouvez la désignation de {} déroutant.


1 commentaires

Le meilleur de toutes les alternatives suggérées à ce jour. Boggles mon esprit qu'il n'y a pas de manière plus simple, telle que \ $ - mais il n'y a pas. C'est une approximation suffisante d'élégance ...



0
votes

Dans le cas où vous souhaitez utiliser des cordes non brus afin de pouvoir échapper à des guillemets doubles, des apostrophes, etc., vous pouvez procéder comme suit:

Imaginez que vous souhaitez utiliser la chaîne $ {Hello} - " L'ami de mon ami "à l'intérieur d'une ficelle. Vous ne pouvez pas faire cela avec des chaînes brutes. Ce que j'ai utilisé cette solution est: xxx

Je n'ai pas échappé à l'apostrophe depuis que j'ai utilisé des guillemets doubles.


0 commentaires

1
votes

Vous pouvez configurer Freemarker pour utiliser [= exp] au lieu de $ {exp} (puisque 2.3.28), et [# ...] / [@ ...] au lieu de <# ...> | <@ ...> en définissant les deux Le interpolation_syntax et le paramètre de configuration (code> (code> om_syntax sur SQARE_BRACKET (dans l'API Java: Configuration CFG; ... cfg.setinterpolationsyntax (Configuration .Square_bracket_interpolation_syntax) et CFG.SETTAGSYNTAX (Configuration.square_Braket_Tag_Syntax) ). Ensuite, la syntaxe ne s'affronte pas avec la syntaxe par défaut.

Il y a un cas délicat; Si le modèle commence par <# ftl> , il bascule la syntaxe de balise en arrière sur angle_braquet . Pour contrer cela, ajoutez simplement un [# ftl] ligne avant de le faire.

Voir aussi: https://freemarker.apache.org/docs/dgui_misc_alternalisyntax.html < / a>


0 commentaires