Qu'est-ce que le format de fichier FTL ?
.ftl est un fichier FreeMarker Template Language - un modèle en texte brut traité par le moteur de modèles Java Apache FreeMarker. FreeMarker s'exécute sur la JVM et fusionne le contenu de sortie statique (HTML, XML, texte brut, SQL, code source, e-mails) avec des directives et des expressions FTL pour produire un résultat textuel final côté serveur.
Un fichier .ftl mélange trois types de syntaxe : des directives telles que <#if>, <#list>, <#include>, <#macro> et <#assign> ; des interpolations écrites sous la forme ${expression} ; et des commentaires FTL sous la forme <#-- commentaire -->. Tout ce qui se trouve en dehors de ces constructions est transmis tel quel à la sortie.
Une directive d'en-tête optionnelle <#ftl> en haut du fichier peut déclarer l'encodage du fichier, le format de sortie, les règles d'auto-échappement et la gestion des espaces blancs. Sans elle, FreeMarker applique l'encodage et les paramètres configurés globalement dans l'application Java appelante.
Deux variantes spécialisées existent aux côtés de .ftl : .ftlh déclenche l'auto-échappement HTML et .ftlx déclenche l'auto-échappement XML, tous deux introduits dans FreeMarker 2.3.24. Celles-ci réduisent le risque de scripts intersites (XSS) sans nécessiter d'appels d'échappement explicites dans chaque modèle.
FreeMarker est largement utilisé dans les frameworks web Java tels que Spring MVC, Apache Struts et Play Framework, ainsi que dans les pipelines de génération de code et les systèmes de modèles de documents. Le projet a rejoint la Apache Software Foundation en 2015 ; la version actuelle est FreeMarker 2.3.34 (2024). VS Code et IntelliJ IDEA prennent tous deux en charge la coloration syntaxique FTL via des extensions.
Sécurité et sûreté
RISQUE : LOWLes modèles FTL sont des fichiers texte brut - sûrs à ouvrir dans n'importe quel éditeur de texte. Les modèles s'exécutent côté serveur sur la JVM ; il n'y a pas d'exécution côté client. Des modèles malveillants pourraient potentiellement exécuter des directives FreeMarker nuisibles (ex: <#assign exec="freemarker.template.utility.Execute"?new()>) si le rendu du modèle s'exécute avec une configuration non sécurisée - il s'agit d'un problème de mauvaise configuration du serveur (Server-Side Template Injection / SSTI), et non d'un risque pour les utilisateurs finaux ouvrant le fichier.
Détails du format
en brefProgrammes qui ouvrent les fichiers FTL
Détails techniques
spécifications approfondies| Style de syntaxe du modèle | Basé sur des directives : directives `<#tag>` + interpolations `${expression}` mélangées au contenu statique |
| Encodage par défaut | UTF-8 par défaut ; peut être remplacé via l'attribut d'encodage dans la directive d'en-tête optionnelle `<#ftl>` en haut du fichier |
| Environnement d'exécution | Java Virtual Machine (JVM) ; traité côté serveur par la bibliothèque FreeMarker |
| Format de sortie | Tout format texte - HTML, XML, texte brut, SQL, code source, corps d'e-mail |
| Catégories de directives | Contrôle de flux (`<#if>`, `<#list>`), affectation (`<#assign>`, `<#local>`), définition (`<#macro>`, `<#function>`), inclusion (`<#include>`, `<#import>`) |
| Syntaxe d'interpolation | `${expression}` (chaîne/nombre) ; `#{nombre}` pris en charge comme interpolation numérique héritée |
| Syntaxe des commentaires | `<#-- commentaire -->` - entièrement supprimé du résultat généré |
| Directive d'en-tête | `<#ftl>` optionnelle en haut du fichier ; définit l'encodage, output_format, auto_esc, strip_whitespace, les attributs |
| Variantes d'auto-échappement | `.ftlh` (auto-échappement HTML) et `.ftlx` (auto-échappement XML) - introduits dans FreeMarker 2.3.24 |
| Accès au modèle de données | Objets Java transmis sous forme de map depuis l'application appelante ; les modèles lisent mais ne peuvent pas modifier le modèle de données |
| Contrôle des espaces blancs | `strip_whitespace` configurable ; contrôle précis avec les directives `<#t>`, `<#lt>`, `<#rt>` par ligne |
| Réutilisation de modèles | `<#include>` pour l'inclusion littérale ; `<#import>` pour les bibliothèques de macros/fonctions avec espace de noms |
| Taille de fichier typique | 1 Ko - 200 Ko par fichier de modèle |
| Publié | circa 2002 (FreeMarker first release) |
| Dernière version | FreeMarker 2.3.34 (2024); hosted at Apache |
| Standard ouvert | Oui · libre de droits |
| Spécification | freemarker.apache.org |
Conversions FTL
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers FTL.