Hvad er FTL-filformatet?
.ftl er en FreeMarker Template Language-fil - en almindelig tekstskabelon, der behandles af Apache FreeMarker Java-skabelonmotoren. FreeMarker kører på JVM og fletter statisk output-indhold (HTML, XML, almindelig tekst, SQL, kildekode, e-mails) med FTL-direktiver og udtryk for at producere det endelige tekstoutput på serversiden.
En .ftl-fil blander tre typer syntaks: direktiver såsom <#if>, <#list>, <#include>, <#macro> og <#assign>; interpolationer skrevet som ${expression}; og FTL-kommentarer i formen <#-- kommentar -->. Alt uden for disse konstruktioner videregives uændret til outputtet.
Et valgfrit <#ftl>-headerdirektiv øverst i filen kan erklære filkodning, outputformat, regler for auto-escaping og håndtering af hvidrum. Uden dette anvender FreeMarker den kodning og de indstillinger, der er konfigureret globalt i den kaldende Java-applikation.
Der findes to specialiserede varianter ved siden af .ftl: .ftlh aktiverer HTML-auto-escaping og .ftlx aktiverer XML-auto-escaping, begge introduceret i FreeMarker 2.3.24. Disse reducerer risikoen for cross-site scripting uden at kræve eksplicitte escaping-kald i hver skabelon.
FreeMarker er meget udbredt i Java-webframeworks som Spring MVC, Apache Struts og Play Framework, samt i rørledninger til kodegenerering og systemer til dokumentskabeloner. Projektet flyttede til Apache Software Foundation i 2015; den nuværende version er FreeMarker 2.3.34 (2024). VS Code og IntelliJ IDEA understøtter begge FTL-syntaksfremhævning via plugins.
Sikkerhed og tryghed
RISIKO: LOWFTL-skabeloner er almindelige tekstfiler - sikre at åbne i enhver teksteditor. Skabeloner kører på serversiden på JVM; der er ingen eksekvering på klientsiden. Ondsindede skabeloner kan potentielt udføre skadelige FreeMarker-direktiver (f.eks. <#assign exec="freemarker.template.utility.Execute"?new()>) hvis skabelon-rendering kører med en usikker konfiguration - dette er et problem med serverkonfigurationen (Server-Side Template Injection / SSTI), ikke en risiko for slutbrugere, der åbner filen.
Formatdetaljer
kort fortaltProgrammer der åbner FTL-filer
Tekniske detaljer
dyb specifikation| Skabelon-syntaksstil | Direktiv-baseret: `<#tag>`-direktiver + `${expression}`-interpolationer blandet ind i statisk indhold |
| Standardkodning | UTF-8 som standard; kan tilsidesættes via encoding-attributten i det valgfrie `<#ftl>`-headerdirektiv øverst i filen |
| Eksekveringsmiljø | Java Virtual Machine (JVM); behandles på serversiden af FreeMarker-biblioteket |
| Outputformat | Ethvert tekstformat - HTML, XML, almindelig tekst, SQL, kildekode, e-mail-indhold |
| Direktiv-kategorier | Flowstyring (`<#if>`, `<#list>`), tildeling (`<#assign>`, `<#local>`), definition (`<#macro>`, `<#function>`), inklusion (`<#include>`, `<#import>`) |
| Interpolationssyntaks | `${expression}` (streng/tal); `#{number}` understøttes som forældet numerisk interpolation |
| Kommentarsyntaks | `<#-- kommentar -->` - fjernes helt fra det rendered output |
| Header-direktiv | Valgfrit `<#ftl>` øverst i filen; indstiller encoding, output_format, auto_esc, strip_whitespace, attributter |
| Varianter af auto-escaping | `.ftlh` (HTML-auto-escape) og `.ftlx` (XML-auto-escape) - introduceret i FreeMarker 2.3.24 |
| Adgang til datamodel | Java-objekter sendt som et map fra den kaldende applikation; skabeloner læser, men kan ikke ændre modellen |
| Hvidrumskontrol | Konfigurerbar `strip_whitespace`; finkornet kontrol med `<#t>`, `<#lt>`, `<#rt>` direktiver pr. linje |
| Genbrug af skabeloner | `<#include>` for bogstavelig inklusion; `<#import>` for makro-/funktionsbiblioteker med navnerum |
| Typisk filstørrelse | 1 KB - 200 KB pr. skabelonfil |
| Udgivet | circa 2002 (FreeMarker first release) |
| Seneste version | FreeMarker 2.3.34 (2024); hosted at Apache |
| Åben standard | Ja · royaltyfri |
| Specifikation | freemarker.apache.org |
FTL-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om FTL-filer.
Ofte stillede spørgsmål
Hvad er en FTL-fil?
Hvordan åbner og redigerer jeg en FTL-fil?
Hvordan behandler/renderer jeg en FreeMarker-skabelon?
Kan jeg konvertere en FTL-fil direkte til HTML?
Hvad er forskellen på .ftl, .ftlh og .ftlx?
.ftl er basisudvidelsen (ingen automatisk escaping). .ftlh aktiverer HTML-auto-escaping (forhindrer XSS). .ftlx aktiverer XML-auto-escaping. Brug .ftlh til alle web-HTML-skabeloner (FreeMarker 2.3.24+).Er FreeMarker det samme som Velocity (.vm-filer)?
<#direktiv>-syntaks; Velocity (.vm) bruger #direktiv-syntaks.