Hva er FTL-filformatet?
.ftl er en FreeMarker Template Language-fil - en mal i ren tekst som behandles av malmotoren Apache FreeMarker for Java. FreeMarker kjører på JVM og fletter statisk utdata (HTML, XML, ren tekst, SQL, kildekode, e-poster) med FTL-direktiver og uttrykk for å produsere ferdig tekst på serversiden.
En .ftl-fil blander tre typer syntaks: direktiver som <#if>, <#list>, <#include>, <#macro> og <#assign>; interpoleringer skrevet som ${expression}; og FTL-kommentarer i formen <#-- kommentar -->. Alt utenfor disse konstruksjonene sendes uendret videre til utdataene.
Et valgfritt <#ftl>-hodedirektiv øverst i filen kan deklarere filkoding, utdataformat, regler for automatisk escaping og håndtering av hvite felt. Uten dette bruker FreeMarker kodingen og innstillingene som er konfigurert globalt i den kallende Java-applikasjonen.
To spesialiserte varianter eksisterer ved siden av .ftl: .ftlh utløser automatisk HTML-escaping og .ftlx utløser automatisk XML-escaping, begge introdusert i FreeMarker 2.3.24. Disse reduserer risikoen for cross-site scripting (XSS) uten å kreve eksplisitte escaping-kall i hver mal.
FreeMarker er mye brukt i Java-rammeverk som Spring MVC, Apache Struts og Play Framework, samt i rørledninger for kodegenerering og systemer for dokumentmaler. Prosjektet flyttet til Apache Software Foundation i 2015; den nåværende versjonen er FreeMarker 2.3.34 (2024). VS Code og IntelliJ IDEA støtter begge FTL-syntaksutheving via utvidelser.
Sikkerhet og trygghet
RISIKO: LOWFTL-maler er rene tekstfiler - trygge å åpne i enhver tekstredigerer. Maler kjører på serversiden på JVM; det er ingen kjøring på klientsiden. Ondsinnede maler kan potensielt utføre skadelige FreeMarker-direktiver (f.eks. <#assign exec=«freemarker.template.utility.Execute»?new()>) hvis malrendring kjører med en usikker konfigurasjon - dette er et problem med feilkonfigurering på serversiden (Server-Side Template Injection / SSTI), ikke en risiko for sluttbrukere som åpner filen.
Formatdetaljer
i et nøtteskallProgrammer som åpner FTL-filer
Tekniske detaljer
dyp spesifikasjon| Malsyntaks-stil | Direktiv-basert: `<#tag>`-direktiver + `${expression}`-interpoleringer blandet inn i statisk innhold |
| Standard koding | UTF-8 som standard; kan overstyres via encoding-attributtet i det valgfrie `<#ftl>`-hodedirektivet øverst i filen |
| Kjøremiljø | Java Virtual Machine (JVM); behandles på serversiden av FreeMarker-biblioteket |
| Utdataformat | Ethvert tekstformat - HTML, XML, ren tekst, SQL, kildekode, e-posttekst |
| Direktivkategorier | Flytkontroll (`<#if>`, `<#list>`), tildeling (`<#assign>`, `<#local>`), definisjon (`<#macro>`, `<#function>`), inkludering (`<#include>`, `<#import>`) |
| Interpoleringssyntaks | `${expression}` (streng/tall); `#{number}` støttes som eldre numerisk interpolering |
| Kommentarsyntaks | `<#-- kommentar -->` - fjernes helt fra de rendrede utdataene |
| Hodedirektiv | Valgfri `<#ftl>` øverst i filen; angir encoding, output_format, auto_esc, strip_whitespace, attributter |
| Varianter for auto-escaping | `.ftlh` (HTML auto-escape) og `.ftlx` (XML auto-escape) - introdusert i FreeMarker 2.3.24 |
| Tilgang til datamodell | Java-objekter sendt som et «map» fra den kallende applikasjonen; maler leser, men kan ikke endre modellen |
| Kontroll av hvite felt | Konfigurerbar `strip_whitespace`; finkornet kontroll med direktivene `<#t>`, `<#lt>`, `<#rt>` per linje |
| Gjenbruk av maler | `<#include>` for bokstavelig inkludering; `<#import>` for makro-/funksjonsbiblioteker med navnerom |
| Typisk filstørrelse | 1 KB - 200 KB per malfil |
| Utgitt | circa 2002 (FreeMarker first release) |
| Siste versjon | FreeMarker 2.3.34 (2024); hosted at Apache |
| Åpen standard | Ja · royalty-fri |
| Spesifikasjon | freemarker.apache.org |
FTL-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om FTL-filer.