Co to jest format pliku FTL?
.ftl to plik FreeMarker Template Language - szablon tekstowy przetwarzany przez silnik szablonów Java Apache FreeMarker. FreeMarker działa na JVM i łączy statyczną treść wyjściową (HTML, XML, zwykły tekst, SQL, kod źródłowy, e-maile) z dyrektywami i wyrażeniami FTL, aby wygenerować końcowy tekst po stronie serwera.
Plik .ftl miesza trzy rodzaje składni: dyrektywy, takie jak <#if>, <#list>, <#include>, <#macro> i <#assign>; interpolacje zapisywane jako ${expression}; oraz komentarze FTL w formie <#-- komentarz -->. Wszystko poza tymi konstrukcjami jest przekazywane bez zmian do danych wyjściowych.
Opcjonalna dyrektywa nagłówka <#ftl> na górze pliku może deklarować kodowanie pliku, format wyjściowy, reguły automatycznego uciekania (auto-escaping) i obsługę białych znaków. Bez niej FreeMarker stosuje kodowanie i ustawienia skonfigurowane globalnie w wywołującej aplikacji Java.
Obok .ftl istnieją dwa wyspecjalizowane warianty: .ftlh uruchamia automatyczne uciekanie HTML, a .ftlx uruchamia automatyczne uciekanie XML; oba wprowadzono w FreeMarker 2.3.24. Zmniejszają one ryzyko ataków cross-site scripting bez konieczności jawnego wywoływania uciekania w każdym szablonie.
FreeMarker jest szeroko stosowany w frameworkach webowych Java, takich jak Spring MVC, Apache Struts i Play Framework, a także w potokach generowania kodu i systemach szablonów dokumentów. Projekt przeniósł się do Apache Software Foundation w 2015 roku; obecna wersja to FreeMarker 2.3.34 (2024). VS Code i IntelliJ IDEA obsługują podświetlanie składni FTL za pomocą wtyczek.
Bezpieczeństwo
RYZYKO: LOWSzablony FTL to pliki tekstowe - bezpieczne do otwarcia w dowolnym edytorze tekstu. Szablony działają po stronie serwera na JVM; nie ma wykonania po stronie klienta. Złośliwe szablony mogłyby potencjalnie wykonywać szkodliwe dyrektywy FreeMarker (np. <#assign exec="freemarker.template.utility.Execute"?new()>), jeśli renderowanie szablonu odbywa się przy niebezpiecznej konfiguracji - jest to problem błędnej konfiguracji serwera (Server-Side Template Injection / SSTI), a nie ryzyko dla użytkowników końcowych otwierających plik.
Szczegóły formatu
w pigułceProgramy otwierające pliki FTL
Szczegóły techniczne
specyfikacja| Styl składni szablonu | Oparty na dyrektywach: dyrektywy `<#tag>` + interpolacje `${expression}` zmieszane ze statyczną treścią |
| Domyślne kodowanie | Domyślnie UTF-8; może być nadpisane przez atrybut encoding w opcjonalnej dyrektywie nagłówka `<#ftl>` na górze pliku |
| Środowisko wykonawcze | Java Virtual Machine (JVM); przetwarzane po stronie serwera przez bibliotekę FreeMarker |
| Format wyjściowy | Dowolny format tekstowy - HTML, XML, zwykły tekst, SQL, kod źródłowy, treści e-maili |
| Kategorie dyrektyw | Kontrola przepływu (`<#if>`, `<#list>`), przypisanie (`<#assign>`, `<#local>`), definicja (`<#macro>`, `<#function>`), włączanie (`<#include>`, `<#import>`) |
| Składnia interpolacji | `${expression}` (ciąg znaków/liczba); `#{number}` obsługiwane jako przestarzała interpolacja liczbowa |
| Składnia komentarzy | `<#-- komentarz -->` - całkowicie usuwane z wyrenderowanego wyniku |
| Dyrektywa nagłówka | Opcjonalna `<#ftl>` na górze pliku; ustawia kodowanie, output_format, auto_esc, strip_whitespace, atrybuty |
| Warianty automatycznego uciekania | `.ftlh` (auto-uciekanie HTML) i `.ftlx` (auto-uciekanie XML) - wprowadzone w FreeMarker 2.3.24 |
| Dostęp do modelu danych | Obiekty Java przekazywane jako mapa z wywołującej aplikacji; szablony odczytują, ale nie mogą modyfikować modelu |
| Kontrola białych znaków | Konfigurowalne `strip_whitespace`; precyzyjna kontrola za pomocą dyrektyw `<#t>`, `<#lt>`, `<#rt>` na linię |
| Ponowne użycie szablonów | `<#include>` do dosłownego włączania; `<#import>` dla bibliotek makr/funkcji w zasięgu przestrzeni nazw |
| Typowy rozmiar pliku | 1 KB - 200 KB na plik szablonu |
| Wydano | circa 2002 (FreeMarker first release) |
| Najnowsza wersja | FreeMarker 2.3.34 (2024); hosted at Apache |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | freemarker.apache.org |
Konwersje FTL
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki FTL.
Najczęściej zadawane pytania
Co to jest plik FTL?
Jak otworzyć i edytować plik FTL?
Jak przetworzyć/wyrenderować szablon FTL?
Czy mogę bezpośrednio przekonwertować plik FTL na HTML?
Jaka jest różnica między .ftl, .ftlh i .ftlx?
.ftl to podstawowe rozszerzenie (brak automatycznego uciekania). .ftlh włącza automatyczne uciekanie HTML (zapobiega XSS). .ftlx włącza automatyczne uciekanie XML. Używaj .ftlh dla wszystkich szablonów stron HTML (FreeMarker 2.3.24+).