Che cos'è il formato di file FTL?
.ftl è un file FreeMarker Template Language - un template in testo semplice elaborato dal motore di template Java Apache FreeMarker. FreeMarker viene eseguito sulla JVM e unisce contenuti di output statici (HTML, XML, testo semplice, SQL, codice sorgente, email) con direttive ed espressioni FTL per produrre l'output testuale finale lato server.
Un file .ftl mescola tre tipi di sintassi: direttive come <#if>, <#list>, <#include>, <#macro> e <#assign>; interpolazioni scritte come ${expression}; e commenti FTL nella forma <#-- commento -->. Tutto ciò che si trova al di fuori di questi costrutti viene passato inalterato all'output.
Una direttiva di intestazione opzionale <#ftl> all'inizio del file può dichiarare la codifica del file, il formato di output, le regole di auto-escaping e la gestione degli spazi vuoti. Senza di essa, FreeMarker applica la codifica e le impostazioni configurate globalmente nell'applicazione Java chiamante.
Esistono due varianti specializzate insieme a .ftl: .ftlh attiva l'auto-escaping HTML e .ftlx attiva l'auto-escaping XML, entrambi introdotti in FreeMarker 2.3.24. Questi riducono il rischio di cross-site scripting senza richiedere chiamate di escaping esplicite in ogni template.
FreeMarker è ampiamente utilizzato nei framework web Java come Spring MVC, Apache Struts e Play Framework, nonché nelle pipeline di generazione di codice e nei sistemi di templating di documenti. Il progetto è passato alla Apache Software Foundation nel 2015; la versione attuale è FreeMarker 2.3.34 (2024). VS Code e IntelliJ IDEA supportano entrambi l'evidenziazione della sintassi FTL tramite plugin.
Sicurezza e incolumità
RISCHIO: LOWI template FTL sono file di testo semplice - sicuri da aprire in qualsiasi editor di testo. I template vengono eseguiti lato server sulla JVM; non c'è esecuzione lato client. Template malevoli potrebbero potenzialmente eseguire direttive FreeMarker dannose (es. <#assign exec=«freemarker.template.utility.Execute»?new()>) se il rendering del template viene eseguito con una configurazione non sicura - questo è un problema di errata configurazione del server (Server-Side Template Injection / SSTI), non un rischio per gli utenti finali che aprono il file.
Dettagli del formato
in sintesiProgrammi che aprono file FTL
Dettagli tecnici
specifiche approfondite| Stile sintassi template | Basato su direttive: direttive `<#tag>` + interpolazioni `${expression}` mescolate nel contenuto statico |
| Codifica predefinita | Predefinita UTF-8; può essere sovrascritta tramite l'attributo encoding nella direttiva opzionale `<#ftl>` all'inizio del file |
| Ambiente di esecuzione | Java Virtual Machine (JVM); elaborato lato server dalla libreria FreeMarker |
| Formato di output | Qualsiasi formato di testo - HTML, XML, testo semplice, SQL, codice sorgente, corpi email |
| Categorie di direttive | Controllo di flusso (`<#if>`, `<#list>`), assegnazione (`<#assign>`, `<#local>`), definizione (`<#macro>`, `<#function>`), inclusione (`<#include>`, `<#import>`) |
| Sintassi interpolazione | `${expression}` (stringa/numero); `#{number}` supportato come interpolazione numerica legacy |
| Sintassi commenti | `<#-- commento -->` - rimosso interamente dall'output renderizzato |
| Direttiva di intestazione | Opzionale `<#ftl>` all'inizio del file; imposta encoding, output_format, auto_esc, strip_whitespace, attributi |
| Varianti auto-escaping | `.ftlh` (auto-escape HTML) e `.ftlx` (auto-escape XML) - introdotte in FreeMarker 2.3.24 |
| Accesso al modello dati | Oggetti Java passati come mappa dall'applicazione chiamante; i template leggono ma non possono modificare il modello |
| Controllo spazi vuoti | Configurabile tramite `strip_whitespace`; controllo granulare con le direttive `<#t>`, `<#lt>`, `<#rt>` per riga |
| Riutilizzo del template | `<#include>` per l'inclusione letterale; `<#import>` per librerie di macro/funzioni con ambito namespace |
| Dimensione tipica del file | 1 KB - 200 KB per file template |
| Rilasciato | circa 2002 (FreeMarker first release) |
| Ultima versione | FreeMarker 2.3.34 (2024); hosted at Apache |
| Standard aperto | Sì · royalty-free |
| Specifica | freemarker.apache.org |
Conversioni FTL
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file FTL.
Domande frequenti
Cos'è un file FTL?
Come posso aprire e modificare un file FTL?
Come si elabora o si esegue il rendering di un template FTL?
Posso convertire direttamente un file FTL in HTML?
Qual è la differenza tra .ftl, .ftlh e .ftlx?
.ftl è l'estensione di base (nessun escaping automatico). .ftlh abilita l'auto-escaping HTML (previene XSS). .ftlx abilita l'auto-escaping XML. Usa .ftlh per tutti i template HTML web (FreeMarker 2.3.24+).