J'utilise Freemarker pour générer un modèle Freemarker. Mais j'ai besoin d'un moyen d'échapper à des étiquettes de Freemarker. P>
Comment puis-je échapper à une liste <# liste> code> tag ou un
$ {expression} code>? p>
4 Réponses :
J'utilise le Syntaxe alternative fonctionnalité. Je démarre le modèle avec [#ftl] et utilisez cette syntaxe. P>
Pour les expressions, j'utilise la fonction littérale à chaîne: $ {r "$ {expression}"} code> p> p>
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".
Vous pouvez également utiliser: $ {"$"} {expression} code> si vous trouvez la désignation de {} déroutant. p>
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 \ $ code> - mais il n'y a pas. C'est une approximation suffisante d'élégance ...
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: p> Je n'ai pas échappé à l'apostrophe depuis que j'ai utilisé des guillemets doubles. P> P>
Vous pouvez configurer Freemarker pour utiliser Il y a un cas délicat; Si le modèle commence par Voir aussi: https://freemarker.apache.org/docs/dgui_misc_alternalisyntax.html < / a> p> [= exp] code> au lieu de
$ {exp} code> (puisque 2.3.28), et
[# ...] code> /
[@ ...] code> au lieu de
<# ...> code> |
<@ ...> code> en définissant les deux Le
interpolation_syntax code> et le paramètre de configuration (code> (code> om_syntax code> sur
SQARE_BRACKET CODE> (dans l'API Java:
Configuration CFG; ... cfg.setinterpolationsyntax (Configuration .Square_bracket_interpolation_syntax) Code> et
CFG.SETTAGSYNTAX (Configuration.square_Braket_Tag_Syntax) code>). Ensuite, la syntaxe ne s'affronte pas avec la syntaxe par défaut. P>
<# ftl> code>, il bascule la syntaxe de balise en arrière sur
angle_braquet code>. Pour contrer cela, ajoutez simplement un
[# ftl] code> ligne avant de le faire. P>