Vad är filformatet FTL?
.ftl är en FreeMarker Template Language-fil - en mall i klartext som bearbetas av Java-mallmotorn Apache FreeMarker. FreeMarker körs på JVM och sammanfogar statiskt utdatainnehåll (HTML, XML, klartext, SQL, källkod, e-post) med FTL-direktiv och uttryck för att producera slutgiltig textutdata på serversidan.
En .ftl-fil blandar tre typer av syntax: direktiv såsom <#if>, <#list>, <#include>, <#macro> och <#assign>; interpolationer skrivna som ${expression}; samt FTL-kommentarer i formen <#-- kommentar -->. Allt utanför dessa konstruktioner skickas oförändrat vidare till utdatan.
Ett valfritt <#ftl>-huvuddirektiv högst upp i filen kan deklarera filkodning, utdataformat, regler för automatisk escaping och hantering av blanksteg. Utan detta tillämpar FreeMarker den kodning och de inställningar som konfigurerats globalt i den anropande Java-applikationen.
Två specialiserade varianter finns vid sidan av .ftl: .ftlh aktiverar automatisk HTML-escaping och .ftlx aktiverar automatisk XML-escaping, båda introducerade i FreeMarker 2.3.24. Dessa minskar risken för cross-site scripting utan att kräva explicita escaping-anrop i varje mall.
FreeMarker används ofta i Java-webbramverk som Spring MVC, Apache Struts och Play Framework, samt i pipelines för kodgenerering och system för dokumentmallar. Projektet flyttades till Apache Software Foundation 2015; den nuvarande versionen är FreeMarker 2.3.34 (2024). VS Code och IntelliJ IDEA stöder båda FTL-syntaxmarkering via insticksmoduler.
Säkerhet & trygghet
RISK: LOWFTL-mallar är klartextfiler - säkra att öppna i valfri textredigerare. Mallar körs på serversidan på JVM; det sker ingen exekvering på klientsidan. Skadliga mallar skulle potentiellt kunna köra skadliga FreeMarker-direktiv (t.ex. <#assign exec="freemarker.template.utility.Execute"?new()>) om mallrenderingen körs med en osäker konfiguration - detta är ett problem med felkonfiguration på serversidan (Server-Side Template Injection / SSTI), inte en risk för slutanvändare som öppnar filen.
Formatdetaljer
i ett nötskalProgram som öppnar FTL-filer
Tekniska detaljer
djup specifikation| Stil för mallsyntax | Direktivbaserad: `<#tag>`-direktiv + `${expression}`-interpolationer blandat med statiskt innehåll |
| Standardkodning | UTF-8 som standard; kan åsidosättas via kodningsattributet i det valfria `<#ftl>`-huvuddirektivet högst upp i filen |
| Exekveringsmiljö | Java Virtual Machine (JVM); bearbetas på serversidan av FreeMarker-biblioteket |
| Utdataformat | Valfritt textformat - HTML, XML, klartext, SQL, källkod, e-postmeddelanden |
| Direktivkategorier | Flödeskontroll (`<#if>`, `<#list>`), tilldelning (`<#assign>`, `<#local>`), definition (`<#macro>`, `<#function>`), inkludering (`<#include>`, `<#import>`) |
| Syntax för interpolation | `${expression}` (sträng/nummer); `#{number}` stöds som föråldrad numerisk interpolation |
| Kommentarsyntax | `<#-- kommentar -->` - tas bort helt från den renderade utdatan |
| Huvuddirektiv | Valfritt `<#ftl>` högst upp i filen; ställer in kodning, output_format, auto_esc, strip_whitespace, attribut |
| Varianter för automatisk escaping | `.ftlh` (HTML-auto-escape) och `.ftlx` (XML-auto-escape) - introducerade i FreeMarker 2.3.24 |
| Åtkomst till datamodell | Java-objekt skickas som en mappning från den anropande applikationen; mallar läser men kan inte ändra modellen |
| Kontroll av blanksteg | Konfigurerbar `strip_whitespace`; finkornig kontroll med direktiven `<#t>`, `<#lt>`, `<#rt>` per rad |
| Återanvändning av mallar | `<#include>` för bokstavlig inkludering; `<#import>` för namnrymdsavgränsade makro-/funktionsbibliotek |
| Typisk filstorlek | 1 KB - 200 KB per mallfil |
| Släppt | circa 2002 (FreeMarker first release) |
| Senaste version | FreeMarker 2.3.34 (2024); hosted at Apache |
| Öppen standard | Ja · royaltyfri |
| Specifikation | freemarker.apache.org |
FTL-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om FTL-filer.
Vanliga frågor
Vad är en FTL-fil?
Hur öppnar och redigerar jag en FTL-fil?
Hur bearbetar/renderar jag en FreeMarker-mall?
Kan jag konvertera en FTL-fil direkt till HTML?
Vad är skillnaden mellan .ftl, .ftlh och .ftlx?
.ftl är basändelsen (ingen automatisk escaping). .ftlh aktiverar automatisk HTML-escaping (förhindrar XSS). .ftlx aktiverar automatisk XML-escaping. Använd .ftlh för alla HTML-mallar för webben (FreeMarker 2.3.24+).Är FreeMarker samma sak som Velocity (.vm-filer)?
<#direktiv>-syntax; Velocity (.vm) använder #direktiv-syntax.