La configuration d'Apache FreeMarker se fait à partir du fichier freemarker.properties.
Pour pouvoir faire fonctionner FreeMarker avec vos propres templates, cette configuration est obligatoire.
La première étape consiste à récupérer un exemplaire de ce fichier. Consultez la page MergeTransformMicroService pour plus de détails.
Ce fichier est un fichier .properties Java (syntaxe clé = valeur).
La seconde étape consiste à modifier ou renseigner les clés en fonction des besoins.
La seule clé qui doit être obligatoirement modifiée est la clé "template_loader", permettant de définir le chargeur de templates.
Clé | Description | ||||||||||||||||||||||||||||||||||||||||
template_loader | |||||||||||||||||||||||||||||||||||||||||
Chargeur de template. Valeur par défaut :
Le caractère "\" indique un saut de ligne dans la valeur d'une clé. Il faut rajouter votre propre chargeur au chargeur par défaut de l'APE. Vous avez à votre disposition plusieurs types de chargeur, suivant le format de livrable de l'ensemble de vos templates, à savoir :
Chargeur com.hardis.adelia.mergedocengine.freemarker.conf.FileTemplateLoaderLes paramètres sont les suivants :
Par exemple, si vos templates utilisateur sont dans les répertoires "c:\billingTemplates" et "c:\reportingTemplates" :
Chargeur com.hardis.adelia.mergedocengine.freemarker.conf.ClassTemplateLoader Les paramètres sont les suivants :
Par exemple, si vos templates utilisateur sont dans un fichier JAR localisé dans le package "/myTemplates" (le fichier JAR doit être présent dans le CLASSPATH Java) :
Chargeur com.hardis.adelia.mergedocengine.freemarker.conf.ZipFileTemplateLoader Les paramètres sont les suivants :
Par exemple, si vos templates utilisateur sont dans les fichiers "c:\billingTemplates.zip" (accessibles depuis la racine du fichier) et "c:\reportingTemplates.zip" (accessibles depuis le sous-répertoire "year2019") :
| |||||||||||||||||||||||||||||||||||||||||
default_encoding | |||||||||||||||||||||||||||||||||||||||||
Encodage par défaut des templates lus à partir d'une locale n'ayant pas d'encodage associé. Valeur par défaut : UTF-8 | |||||||||||||||||||||||||||||||||||||||||
template_update_delay | |||||||||||||||||||||||||||||||||||||||||
Définit le délai en millisecondes devant s'écouler avant que le module de gestion de cache des templates vérifie s'il existe une version plus récente d'un template que celui en cache. La valeur par défaut est 5 s. En phase de mise au point de templates, cette valeur indique quelle est la durée minimale d'attente entre l'instant de sauvegarde d'un template (sauvegarder une modification par exemple) et sa disponibilité à être traité (pour tester le résultat de la modification) par le moteur FreeMarker. Il faut donc indiquer une valeur de l'ordre de la seconde. En phase de production, il peut être intéressant d'avoir une valeur très grande pour ne pas impacter les performances du moteur lors de fortes charges. | |||||||||||||||||||||||||||||||||||||||||
locale | |||||||||||||||||||||||||||||||||||||||||
Définit la locale utilisée par défaut si aucune locale n'est spécifiée dans les paramètres des services Web. | |||||||||||||||||||||||||||||||||||||||||
template_exception_handler | |||||||||||||||||||||||||||||||||||||||||
Définit la stratégie de remonté d'erreur lors du traitement d'un template. Valeur par défaut: "rethrow" | |||||||||||||||||||||||||||||||||||||||||
boolean_format | |||||||||||||||||||||||||||||||||||||||||
Définit les valeurs alphanumériques utilisées pour convertir une valeur booléenne FreeMarker en chaîne alphanumérique dans l'interpolation ${ booleanValue }. Valeurs par défaut : yes, no ("yes" pour True et "no" pour False) | |||||||||||||||||||||||||||||||||||||||||
extSharedVariables | |||||||||||||||||||||||||||||||||||||||||
Permet de définir une ou plusieurs variables partagées par tous les templates. La syntaxe doit être une Map. Par exemple : extSharedVariables = { "sharedNumberVar": 10, \
Ces variables peuvent être manipulées dans les templates en utilisant des interpolations ${ sharedNumberVar }, ${sharedSequenceVar[1]} , ${sharedHashVar.subVar1}, etc. Attention : si une variable de premier niveau dans le data model porte le même nom qu'une variable partagée, la variable du data model va "cacher" la variable partagée. |