2017-10-17 4 views
0

J'ai une situation comme celle-ci. J'ai le dossier a et à l'intérieur j'ai a.ftl et le dossier b. Dans le dossier b, il y a b.ftl. dans b.ftl J'ai [#macro macroName param1]...[/#macro] Comment appeler macro à partir du fichier a? J'ai l'avertissement d'idée d'intellij. J'ai vu ce lien https://intellij-support.jetbrains.com/hc/en-us/community/posts/206196939-Getting-Intellij-to-pick-up-Freemarker-macros j'ai donc essayé de placerAppelez la macro freemarker depuis un fichier différent

[#-- @implicitly included --] 
[#-- @ftlroot "" --] 

au sommet de la a.ftl mais il ne fonctionne pas. Je regardais dans les docs freemarker http://freemarker.org/docs/ref_directive_macro.html mais il y a un exemple juste avec l'appel de la macro à partir du même fichier.

Répondre

2

Vous pouvez utiliser <#import "/b/b.ftl" as b> (où le dernier b peut être n'importe quel nom de variable), puis vous pouvez appeler la macro comme <@b.macroName ...>. Mettre les macros/fonctions/valeurs couramment nécessaires dans un modèle #import -ed dans d'autres modèles est une pratique courante.

Vous pouvez également utiliser <#include "/b/b.ftl"> dans /a/a.ftl, et vous pouvez simplement utiliser <@macroName ...> (aucun préfixe d'espace de noms comme b.). Le cas d'utilisation commun de #include est cependant l'impression de sortie commune, car il exécute l'ensemble a.ftl, chaque fois que c'est #include-d. Si a.ftl contient uniquement des définitions de macro et d'autres affectations de ce type qui peuvent ne pas avoir d'importance.

Les importations et les inclus peuvent également être exécutés automatiquement dans le modèle le plus haut. Pour cela, consultez les paramètres de configuration auto_imports (Configuration.setAutoImports) et auto_includes (Configuration.setAutoIncludes).

Voir aussi: http://freemarker.org/docs/dgui_misc_namespace.html

+0

Je solution utilisée avec l'importation, je vous remercie de l'aide. – Spasoje