FreeMarker

FreeMarker

O que é FreeMarker?

O FreeMarker é um motor de templates baseado em Java que, através de templates pré-definidos, gera um arquivo de saída. Apesar de ser amplamente utilizado para desenvolvimento baseado no modelo MVC, através do uso de Servlets, também pode ser utilizado para processar qualquer tipo de texto: HTML, XML, Java, TXT, etc. Quando utilizado em frameworks MVC, o FreeMarker é responsável pela camada de visualização, substituindo o JSP, como são os casos, por exemplo, do WebWork, Spring e do Struts 2. O Struts 2 disponibiliza o FreeMarker como uma tecnologia alternativa para a representação da camada de visualização.

Embora muitos utilizem o FreeMarker como alternativa ao JSP, o seu principal objetivo é ser um simples e rápido framework de templates, o qual pode ser utilizado para automatizar a geração de determinado código. Um exemplo de aplicação que utiliza o FreeMarker com esta finalidade é o HibernateTools, ferramenta bem conhecida dos usuários do Hibernate.

Por padrão, os templates do FreeMarker possuem a extensão FTL (FreeMarker Template Language), porém, podem ser definidos com qualquer nomenclatura.

Apesar de o FreeMarker possuir uma sintaxe própria de codificação, ele não é uma linguagem completa de programação, ele apenas processa arquivos de texto com base em um modelo, conforme mostrado na figura abaixo.

Motor FreeMarker

Alguns editores utilizam o FreeMarker como linguagem de modelo para geração de artefatos, como o NetBeans IDE 6.0.
O FreeMarker possui uma lista de diretivas parecidas com o Velocity, apesar de a linguagem de templates do FreeMarker ser bem mais completa e com mais recursos. A tabela abaixo lista as principais diretivas utilizadas pela FTL.

Diretiva Notação
#assign
<#assign name=value><#assign name1=value1 name2=value2 ... nameN=valueN>
<#assign same as above... in namespacehash>
<#assign name>
capture this
</#assign>
<#assign name in namespacehash>
capture this
</#assign>
#if, #else, #elseif, #end
<#if condition>
...
<#elseif condition2>
...
<#elseif condition3>
...
<#else>
...
</#if>
#function
<#function name param1 param2 ... paramN>
...
<#return returnValue>
...
</#function>
#include
<#include path>
or
<#include path options>
#list
<#list sequence as item>
...
</#list>
#macro
<#macro name param1 param2 ... paramN>
...
<#nested loopvar1, loopvar2, ..., loopvarN>
...
<#return>
...
</#macro>
#attempt
<#attempt>attempt block
<#recover>
recover block
</#attempt>
#stop
<#stop>
or
<#stop reason>

18 Replies to “FreeMarker”

  1. In subjects who are G6PD deficient, it is lowered by more than this in heterozygotes females, the fall may amount to about 50, whereas in hemizygotes males the fall is often much greater, and almost all may be lost finasteride generic In addition, patient informed consent was waived by Research Ethics Committee of Chi Mei Hospital

Deixe uma resposta

O seu endereço de e-mail não será publicado.