Was ist das FTL-Dateiformat?
.ftl ist eine FreeMarker Template Language-Datei - ein Klartext-Template, das von der Apache FreeMarker Java-Template-Engine verarbeitet wird. FreeMarker läuft auf der JVM und führt statische Ausgabeinhalte (HTML, XML, Klartext, SQL, Quellcode, E-Mails) mit FTL-Direktiven und Ausdrücken zusammen, um serverseitig die endgültige Textausgabe zu erzeugen.
Eine .ftl-Datei mischt drei Arten von Syntax: Direktiven wie <#if>, <#list>, <#include>, <#macro> und <#assign>; Interpolationen, die als ${expression} geschrieben werden; und FTL-Kommentare in der Form <#-- comment -->. Alles außerhalb dieser Konstrukte wird unverändert an die Ausgabe weitergegeben.
Eine optionale <#ftl>-Header-Direktive am Anfang der Datei kann die Dateikodierung, das Ausgabeformat, Regeln für das automatische Escaping und die Behandlung von Leerzeichen deklarieren. Ohne diese wendet FreeMarker die Kodierung und Einstellungen an, die global in der aufrufenden Java-Anwendung konfiguriert sind.
Neben .ftl existieren zwei spezialisierte Varianten: .ftlh löst automatisches HTML-Escaping aus und .ftlx löst automatisches XML-Escaping aus, beide eingeführt in FreeMarker 2.3.24. Diese reduzieren das Risiko von Cross-Site-Scripting, ohne dass explizite Escaping-Aufrufe in jedem Template erforderlich sind.
FreeMarker ist weit verbreitet in Java-Web-Frameworks wie Spring MVC, Apache Struts und Play Framework sowie in Code-Generierungs-Pipelines und Dokumenten-Templating-Systemen. Das Projekt wechselte 2015 zur Apache Software Foundation; die aktuelle Version ist FreeMarker 2.3.34 (2024). VS Code und IntelliJ IDEA unterstützen beide FTL-Syntax-Highlighting über Plugins.
Sicherheit
RISIKO: LOWFTL-Templates sind reine Textdateien - sie können sicher in jedem Texteditor geöffnet werden. Templates laufen serverseitig auf der JVM; es findet keine clientseitige Ausführung statt. Bösartige Templates könnten potenziell schädliche FreeMarker-Direktiven ausführen (z. B. <#assign exec="freemarker.template.utility.Execute"?new()>), wenn das Template-Rendering mit einer unsicheren Konfiguration läuft - dies ist ein Problem der serverseitigen Fehlkonfiguration (Server-Side Template Injection / SSTI), kein Risiko für Endbenutzer, die die Datei öffnen.
Formatdetails
kurz gefasstProgramme zum Öffnen von FTL-Dateien
Technische Details
technische Spezifikation| Stil der Template-Syntax | Direktiven-basiert: `<#tag>`-Direktiven + `${expression}`-Interpolationen gemischt in statischen Inhalt |
| Standardkodierung | Standardmäßig UTF-8; kann über das encoding-Attribut in der optionalen `<#ftl>`-Header-Direktive am Dateianfang überschrieben werden |
| Ausführungsumgebung | Java Virtual Machine (JVM); serverseitig verarbeitet durch die FreeMarker-Bibliothek |
| Ausgabeformat | Beliebiges Textformat - HTML, XML, Klartext, SQL, Quellcode, E-Mail-Inhalte |
| Direktiven-Kategorien | Ablaufsteuerung (`<#if>`, `<#list>`), Zuweisung (`<#assign>`, `<#local>`), Definition (`<#macro>`, `<#function>`), Einbindung (`<#include>`, `<#import>`) |
| Interpolations-Syntax | `${expression}` (String/Zahl); `#{number}` wird als veraltete numerische Interpolation unterstützt |
| Kommentar-Syntax | `<#-- comment -->` - wird vollständig aus der gerenderten Ausgabe entfernt |
| Header-Direktive | Optionales `<#ftl>` am Dateianfang; legt encoding, output_format, auto_esc, strip_whitespace und Attribute fest |
| Varianten für automatisches Escaping | `.ftlh` (HTML-Auto-Escaping) und `.ftlx` (XML-Auto-Escaping) - eingeführt in FreeMarker 2.3.24 |
| Zugriff auf Datenmodell | Java-Objekte, die als Map von der aufrufenden Anwendung übergeben werden; Templates lesen das Modell, können es aber nicht ändern |
| Leerzeichen-Steuerung | Konfigurierbares `strip_whitespace`; feingranulare Steuerung mit `<#t>`, `<#lt>`, `<#rt>` Direktiven pro Zeile |
| Template-Wiederverwendung | `<#include>` für wörtliche Einbindung; `<#import>` für Makro-/Funktionsbibliotheken mit Namensraum-Geltungsbereich |
| Typische Dateigröße | 1 KB - 200 KB pro Template-Datei |
| Veröffentlicht | circa 2002 (FreeMarker first release) |
| Neueste Version | FreeMarker 2.3.34 (2024); hosted at Apache |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | freemarker.apache.org |
FTL-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu FTL-Dateien.
Häufig gestellte Fragen
Was ist eine FTL-Datei?
Wie öffne und bearbeite ich eine FTL-Datei?
Wie verarbeite/rendere ich ein FTL-Template?
Kann ich eine FTL-Datei direkt in HTML konvertieren?
Was ist der Unterschied zwischen .ftl, .ftlh und .ftlx?
.ftl ist die Basis-Erweiterung (kein automatisches Escaping). .ftlh aktiviert automatisches HTML-Escaping (verhindert XSS). .ftlx aktiviert automatisches XML-Escaping. Verwenden Sie .ftlh für alle Web-HTML-Templates (FreeMarker 2.3.24+).Ist FreeMarker dasselbe wie Velocity (.vm-Dateien)?
<#directive>-Syntax; Velocity (.vm) verwendet die #directive-Syntax.