Wat is het FTL-bestandsformaat?
.ftl is een FreeMarker Template Language-bestand - een sjabloon in platte tekst dat wordt verwerkt door de Apache FreeMarker Java-sjabloonengine. FreeMarker draait op de JVM en voegt statische uitvoerinhoud (HTML, XML, platte tekst, SQL, broncode, e-mails) samen met FTL-richtlijnen en expressies om aan de serverzijde de uiteindelijke tekstuitvoer te produceren.
Een .ftl-bestand mengt drie soorten syntaxis: richtlijnen zoals <#if>, <#list>, <#include>, <#macro> en <#assign>; interpolaties geschreven als ${expression}; en FTL-commentaar in de vorm <#-- comment -->. Alles buiten deze constructies wordt ongewijzigd doorgegeven aan de uitvoer.
Een optionele <#ftl>-headerrichtlijn bovenaan het bestand kan de bestandscodering, het uitvoerformaat, regels voor automatische escaping en de verwerking van witruimte declareren. Zonder deze richtlijn past FreeMarker de codering en instellingen toe die globaal zijn geconfigureerd in de aanroepende Java-applicatie.
Naast .ftl bestaan er twee gespecialiseerde varianten: .ftlh activeert automatische HTML-escaping en .ftlx activeert automatische XML-escaping, beide geïntroduceerd in FreeMarker 2.3.24. Deze verminderen het risico op cross-site scripting zonder dat expliciete escaping-aanroepen in elk sjabloon nodig zijn.
FreeMarker wordt veel gebruikt in Java-webframeworks zoals Spring MVC, Apache Struts en Play Framework, evenals in codegeneratie-pipelines en systemen voor document-sjablonen. Het project is in 2015 overgegaan naar de Apache Software Foundation; de huidige release is FreeMarker 2.3.34 (2024). VS Code en IntelliJ IDEA ondersteunen beide FTL-syntaxisaccentuering via plug-ins.
Beveiliging & veiligheid
RISICO: LOWFTL-sjablonen zijn platte tekstbestanden - veilig om te openen in elke teksteditor. Sjablonen draaien aan de serverzijde op de JVM; er is geen uitvoering aan de clientzijde. Kwaadaardige sjablonen zouden mogelijk schadelijke FreeMarker-richtlijnen kunnen uitvoeren (bijv. <#assign exec="freemarker.template.utility.Execute"?new()>) als het renderen van sjablonen draait met een onveilige configuratie - dit is een probleem met de serverconfiguratie (Server-Side Template Injection / SSTI), geen risico voor eindgebruikers die het bestand openen.
Formaatdetails
in een notendopProgramma's die FTL-bestanden openen
Technische details
diepe specificaties| Stijl van sjabloonsyntaxis | Op richtlijnen gebaseerd: `<#tag>`-richtlijnen + `${expression}`-interpolaties gemengd in statische inhoud |
| Standaardcodering | Standaard UTF-8; kan worden overschreven via het codering-attribuut in de optionele `<#ftl>`-headerrichtlijn bovenaan het bestand |
| Uitvoeringsomgeving | Java Virtual Machine (JVM); aan de serverzijde verwerkt door de FreeMarker-bibliotheek |
| Uitvoerformaat | Elk tekstformaat - HTML, XML, platte tekst, SQL, broncode, e-mailteksten |
| Categorieën richtlijnen | Flow control (`<#if>`, `<#list>`), toewijzing (`<#assign>`, `<#local>`), definitie (`<#macro>`, `<#function>`), inclusie (`<#include>`, `<#import>`) |
| Syntaxis voor interpolatie | `${expression}` (tekenreeks/getal); `#{number}` ondersteund als verouderde numerieke interpolatie |
| Syntaxis voor commentaar | `<#-- comment -->` - wordt volledig verwijderd uit de gerenderde uitvoer |
| Headerrichtlijn | Optionele `<#ftl>` bovenaan het bestand; stelt codering, output_format, auto_esc, strip_whitespace en attributen in |
| Varianten voor automatische escaping | `.ftlh` (HTML auto-escape) en `.ftlx` (XML auto-escape) - geïntroduceerd in FreeMarker 2.3.24 |
| Toegang tot datamodel | Java-objecten doorgegeven als een map vanuit de aanroepende applicatie; sjablonen lezen het model maar kunnen het niet wijzigen |
| Controle over witruimte | Configureerbare `strip_whitespace`; fijnmazige controle met `<#t>`, `<#lt>`, `<#rt>` richtlijnen per regel |
| Hergebruik van sjablonen | `<#include>` voor letterlijke inclusie; `<#import>` voor macro-/functiebibliotheken met een eigen naamruimte |
| Typische bestandsgrootte | 1 KB - 200 KB per sjabloonbestand |
| Uitgebracht | circa 2002 (FreeMarker first release) |
| Laatste versie | FreeMarker 2.3.34 (2024); hosted at Apache |
| Open standaard | Ja · royaltyvrij |
| Specificatie | freemarker.apache.org |
FTL conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over FTL-bestanden.