O que é o formato de ficheiro FTL?
.ftl é um arquivo FreeMarker Template Language - um modelo de texto simples processado pelo mecanismo de modelos Java Apache FreeMarker. O FreeMarker roda na JVM e mescla conteúdo de saída estático (HTML, XML, texto simples, SQL, código-fonte, e-mails) com diretivas e expressões FTL para produzir a saída de texto final no lado do servidor.
Um arquivo .ftl mistura três tipos de sintaxe: diretivas como <#if>, <#list>, <#include>, <#macro> e <#assign>; interpolações escritas como ${expression}; e comentários FTL na forma <#-- comentário -->. Tudo fora dessas construções é passado inalterado para a saída.
Uma diretiva de cabeçalho opcional <#ftl> no topo do arquivo pode declarar a codificação do arquivo, o formato de saída, as regras de escape automático e o tratamento de espaços em branco. Sem ela, o FreeMarker aplica a codificação e as configurações definidas globalmente na aplicação Java chamadora.
Existem duas variantes especializadas ao lado do .ftl: .ftlh aciona o escape automático de HTML e .ftlx aciona o escape automático de XML, ambos introduzidos no FreeMarker 2.3.24. Eles reduzem o risco de cross-site scripting sem exigir chamadas de escape explícitas em cada modelo.
O FreeMarker é amplamente utilizado em frameworks web Java, como Spring MVC, Apache Struts e Play Framework, bem como em pipelines de geração de código e sistemas de modelos de documentos. O projeto mudou-se para a Apache Software Foundation em 2015; a versão atual é o FreeMarker 2.3.34 (2024). O VS Code e o IntelliJ IDEA suportam o realce de sintaxe FTL por meio de plugins.
Segurança e proteção
RISCO: LOWModelos FTL são arquivos de texto simples - seguros para abrir em qualquer editor de texto. Os modelos rodam no lado do servidor na JVM; não há execução no lado do cliente. Modelos maliciosos poderiam potencialmente executar diretivas FreeMarker prejudiciais (ex: <#assign exec="freemarker.template.utility.Execute"?new()>) se a renderização do modelo rodar com configuração insegura - isso é um problema de configuração incorreta do servidor (Server-Side Template Injection / SSTI), não um risco para usuários finais que abrem o arquivo.
Detalhes do formato
em resumoProgramas que abrem arquivos FTL
Detalhes técnicos
especificação profunda| Estilo de sintaxe do modelo | Baseado em diretivas: diretivas `<#tag>` + interpolações `${expression}` misturadas em conteúdo estático |
| Codificação padrão | Padrão UTF-8; pode ser substituída via atributo de codificação na diretiva de cabeçalho opcional `<#ftl>` no topo do arquivo |
| Ambiente de execução | Java Virtual Machine (JVM); processado no lado do servidor pela biblioteca FreeMarker |
| Formato de saída | Qualquer formato de texto - HTML, XML, texto simples, SQL, código-fonte, corpos de e-mail |
| Categorias de diretivas | Controle de fluxo (`<#if>`, `<#list>`), atribuição (`<#assign>`, `<#local>`), definição (`<#macro>`, `<#function>`), inclusão (`<#include>`, `<#import>`) |
| Sintaxe de interpolação | `${expression}` (string/número); `#{number}` suportado como interpolação numérica legada |
| Sintaxe de comentário | `<#-- comentário -->` - removido inteiramente da saída renderizada |
| Diretiva de cabeçalho | Opcional `<#ftl>` no topo do arquivo; define codificação, output_format, auto_esc, strip_whitespace, atributos |
| Variantes de escape automático | `.ftlh` (escape automático HTML) e `.ftlx` (escape automático XML) - introduzidos no FreeMarker 2.3.24 |
| Acesso ao modelo de dados | Objetos Java passados como um mapa da aplicação chamadora; os modelos leem, mas não podem modificar o modelo de dados |
| Controle de espaços em branco | Configurável via `strip_whitespace`; controle refinado com diretivas `<#t>`, `<#lt>`, `<#rt>` por linha |
| Reutilização de modelos | `<#include>` para inclusão literal; `<#import>` para bibliotecas de macros/funções com escopo de namespace |
| Tamanho de arquivo típico | 1 KB - 200 KB por arquivo de modelo |
| Lançado | circa 2002 (FreeMarker first release) |
| Versão mais recente | FreeMarker 2.3.34 (2024); hosted at Apache |
| Padrão aberto | Sim · livre de royalties |
| Especificação | freemarker.apache.org |
Conversões de FTL
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos FTL.
Perguntas frequentes
O que é um arquivo FTL?
Como abro e edito um arquivo FTL?
Como processo/renderizo um modelo FTL?
Posso converter um arquivo FTL para HTML diretamente?
Qual é a diferença entre .ftl, .ftlh e .ftlx?
.ftl é a extensão base (sem escape automático). .ftlh habilita o escape automático de HTML (previne XSS). .ftlx habilita o escape automático de XML. Use .ftlh para todos os modelos HTML web (FreeMarker 2.3.24+).