¿Qué es el formato de archivo FTL?
.ftl es un archivo de lenguaje de plantillas FreeMarker (FreeMarker Template Language), una plantilla de texto plano procesada por el motor de plantillas Java Apache FreeMarker. FreeMarker se ejecuta en la JVM y fusiona contenido de salida estático (HTML, XML, texto plano, SQL, código fuente, correos electrónicos) con directivas y expresiones FTL para producir una salida de texto final en el lado del servidor.
Un archivo .ftl mezcla tres tipos de sintaxis: directivas como <#if>, <#list>, <#include>, <#macro> y <#assign>; interpolaciones escritas como ${expression}; y comentarios FTL en la forma <#-- comentario -->. Todo lo que esté fuera de estas construcciones se transfiere sin cambios a la salida.
Una directiva de encabezado opcional <#ftl> en la parte superior del archivo puede declarar la codificación del archivo, el formato de salida, las reglas de escape automático y el manejo de espacios en blanco. Sin ella, FreeMarker aplica la codificación y los ajustes configurados globalmente en la aplicación Java que realiza la llamada.
Existen dos variantes especializadas junto a .ftl: .ftlh activa el escape automático de HTML y .ftlx activa el escape automático de XML, ambas introducidas en FreeMarker 2.3.24. Estas reducen el riesgo de secuencias de comandos en sitios cruzados (XSS) sin requerir llamadas de escape explícitas en cada plantilla.
FreeMarker se utiliza ampliamente en marcos de trabajo web de Java como Spring MVC, Apache Struts y Play Framework, así como en flujos de generación de código y sistemas de plantillas de documentos. El proyecto se trasladó a la Apache Software Foundation en 2015; la versión actual es FreeMarker 2.3.34 (2024). Tanto VS Code como IntelliJ IDEA admiten el resaltado de sintaxis FTL mediante complementos.
Seguridad y protección
RIESGO: LOWLas plantillas FTL son archivos de texto plano; es seguro abrirlos en cualquier editor de texto. Las plantillas se ejecutan en el lado del servidor en la JVM; no hay ejecución en el lado del cliente. Las plantillas maliciosas podrían potencialmente ejecutar directivas de FreeMarker dañinas (p. ej., <#assign exec="freemarker.template.utility.Execute"?new()>) si el renderizado de la plantilla se ejecuta con una configuración insegura; esto es un problema de configuración incorrecta del servidor (Server-Side Template Injection / SSTI), no un riesgo para los usuarios finales que abren el archivo.
Detalles del formato
en pocas palabrasProgramas que abren archivos FTL
Detalles técnicos
especificación profunda| Estilo de sintaxis de plantilla | Basado en directivas: directivas `<#tag>` + interpolaciones `${expression}` mezcladas en contenido estático |
| Codificación predeterminada | UTF-8 por defecto; puede anularse mediante el atributo encoding en la directiva de encabezado opcional `<#ftl>` al inicio del archivo |
| Entorno de ejecución | Java Virtual Machine (JVM); procesado en el lado del servidor por la biblioteca FreeMarker |
| Formato de salida | Cualquier formato de texto: HTML, XML, texto plano, SQL, código fuente, cuerpos de correo electrónico |
| Categorías de directivas | Control de flujo (`<#if>`, `<#list>`), asignación (`<#assign>`, `<#local>`), definición (`<#macro>`, `<#function>`), inclusión (`<#include>`, `<#import>`) |
| Sintaxis de interpolación | `${expression}` (cadena/número); `#{number}` admitido como interpolación numérica heredada |
| Sintaxis de comentarios | `<#-- comentario -->`: se elimina por completo de la salida renderizada |
| Directiva de encabezado | Opcional `<#ftl>` al inicio del archivo; establece encoding, output_format, auto_esc, strip_whitespace, atributos |
| Variantes de escape automático | `.ftlh` (escape automático HTML) y `.ftlx` (escape automático XML), introducidas en FreeMarker 2.3.24 |
| Acceso al modelo de datos | Objetos Java pasados como un mapa desde la aplicación que realiza la llamada; las plantillas leen pero no pueden modificar el modelo |
| Control de espacios en blanco | `strip_whitespace` configurable; control detallado con directivas `<#t>`, `<#lt>`, `<#rt>` por línea |
| Reutilización de plantillas | `<#include>` para inclusión literal; `<#import>` para bibliotecas de macros/funciones con ámbito de espacio de nombres |
| Tamaño de archivo típico | 1 KB - 200 KB por archivo de plantilla |
| Lanzado | circa 2002 (FreeMarker first release) |
| Última versión | FreeMarker 2.3.34 (2024); hosted at Apache |
| Estándar abierto | Sí · libre de regalías |
| Especificación | freemarker.apache.org |
Conversiones de FTL
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos FTL.