Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Formación
Freemarker.sxw
Freemarker Versión 1.0
Revisión: 1
Emitido por: NHT-Norwick Fecha : 07/07/2003
CONTROL DE ACTUALIZACIONES
VERSIÓN 1.
FECHA
VERSIÓN: 1.0
Copyright (c) 2003, New High Technologies of Norwick S.L. . Este
documento puede ser distribuido solo bajo los términos y condiciones de la
licencia de Documentación de javaHispano v1.0 o posterior (la última versión
se encuentra en http://www.javahispano.org/licencias/).
1 / 15
CERVANTES
Formación
Freemarker.sxw
Freemarker
Versión: 1.0
Emitido por: NHT-Norwick Fecha : 16/09/2003
INDICE
Control de actualizaciones...........................................................................................................................1
CERVANTES.......................................................................................................................................................1
Hoja Resumen de modificaciones.................................................................................................................1
INDICE...............................................................................................................................................................2
CERVANTES.......................................................................................................................................................2
1. INTRODUCCIÓN................................................................................................................................................3
2. MODELO DE DATOS..........................................................................................................................................4
3. PLANTILLAS....................................................................................................................................................6
4. INTERPOLACIONES............................................................................................................................................7
5. DIRECTIVAS (ETIQUETAS FTL)..........................................................................................................................8
Directivas predefinidas.........................................................................................................................9
assign:................................................................................................................................................9
if, elseif, else:....................................................................................................................................9
list, break:........................................................................................................................................10
Built-in.........................................................................................................................................................11
built-in para Cadenas de texto...........................................................................................................11
built-in para números.........................................................................................................................12
built-in para fechas y horas................................................................................................................13
built-in para variables no definidas...................................................................................................13
REFERENCIAS............................................................................................................................................15
Freemarker 2 / 15 Freemarker.sxw
Fecha: 16/09/2003 Versión: 1.0
CERVANTES
Formación
Freemarker.sxw
Freemarker
Versión: 1.0
Emitido por: NHT-Norwick Fecha : 16/09/2003
1. INTRODUCCIÓN
Todos estamos de acuerdo en que el perfil de un diseñador/maquetador (media) y un
programador (procesos) son perfiles totalmente independientes. Sin embargo, con la metodología
actual, en muchas ocasiones un maquetador tiene que trabajar sobre páginas llenas de código Java;
y, a su vez, muchas veces un programador tiene que retocar código HTML, con el riesgo que esto
supone en ambos casos.
Por lo tanto, tenemos la necesidad de separar al máximo grado posible el diseño y la maquetación
de la programación, y esto se consigue utilizando un motor de plantillas. Un motor de plantillas
es una librería que permite separar los datos de la presentación, lo que en nuestro entorno web
equivale a separar la programación Java del código HTML.
Freemarker es un motor de plantillas que se adapta muy bien a las necesidades que tenemos, y
será el que usaremos a partir de ahora en nuestros proyectos.
Como en todo motor de plantillas, en Freemarker nos encontramos con 2 elementos principales:
las plantillas y el modelo de datos. La labor de Freemaker es juntar estos dos elementos para
enviar código HTML al navegador.
La principal ventaja de este sistema es que la plantilla llevará sólo la programación mínima
necesaria para hacerla dinámica, dejando todo el peso de la programación fuera de la plantilla.
Esta guía intenta explicar las nociones básicas necesarias para el uso de freemarker por parte del
equipo de desarrollo.
Freemarker 3 / 15 Freemarker.sxw
Fecha: 16/09/2003 Versión: 1.0
CERVANTES
Formación
Freemarker.sxw
Freemarker
Versión: 1.0
Emitido por: NHT-Norwick Fecha : 16/09/2003
2. MODELO DE DATOS
Podemos imaginarnos el modelo de datos como un diagrama de árbol, donde los elementos están
ordenados jeráquicamente.
(root)
|
+- animales
| |
| +- ratón
| | |
| | +- tamaño = "pequeño"
| | |
| | +- precio = 50
| |
| +- elefante
| | |
| | +- tamaño = "grande"
| | |
| | +- precio = 5000
| |
| +- pitón
| |
| +- tamaño = "medio"
| |
| +- precio = 4999
|
+- test = "Esto es un test"
|
+- queno
|
+ causa = "no sé"
• Escalares (scalars):
Son los elementos que guardan un valor simple. En el ejemplo, tamaño, precio,
test y causa son elementos escalares. Los valores simples pueden ser de los
siguientes tipos:
• String: cadenas de texto que deben ir entre comillas, dobles o
simples.
• Number: números positivos, negativos o decimales. El separador
decimal es el punto
Freemarker 4 / 15 Freemarker.sxw
Fecha: 16/09/2003 Versión: 1.0
CERVANTES
Formación
Freemarker.sxw
Freemarker
Versión: 1.0
Emitido por: NHT-Norwick Fecha : 16/09/2003
• Listas (sequences):
Son contenedores de otros elementos. Por lo general se usan para agrupar
elementos de una misma categoría, pudiendo acceder a ellos por la posición que
ocupan dentro de la secuencia, ocupando el primer elemento la posición 0. En el
ejemplo animales , ratón, elefnte, pitón y queno son elementos de tipo
secuencia. Como ya hemos dicho, un elemento puede ser de varios tipos, y eso
es lo que ocurre, por ejemplo, con animales, que es de tipo secuencia y de tipo
hashes a la vez. Para movernos por las secuencias los podemos hacer por su
posicion. Por ejemplo, para acceder al ratón accederíamos así: animales[0].
• Métodos:
Son los elementos que calculan algo en función de un parámetro que le
pasamos, y devulven un elemento. No están representados en el ejemplo. No
se recomienda usarlos en la parte de la presentación, excepto los que manejan
la presentacion (Por ejemplo String.trim()), ya que estaríamos realizando en
parte algo que queremos evitar: mezclar la lógica con la presentación.Por lo
tanto no los explciaremos en esta guía.
Freemarker 5 / 15 Freemarker.sxw
Fecha: 16/09/2003 Versión: 1.0
CERVANTES
Formación
Freemarker.sxw
Freemarker
Versión: 1.0
Emitido por: NHT-Norwick Fecha : 16/09/2003
3. PLANTILLAS
Las plantillas son las páginas con el código HTML, pero que contienen partes de código escritas
en lenguaje FTL (FreeMarker Template Language); un lenguaje muy simple que nos permitirá
tener contenido dinámico.
Ejemplo:
<html>
<head>
<title>Welcome!</title> Texto:
</head>
<body> Interpolaciones:
<#-- Greet the user with his/her name -->
<h1>Welcome ${user}!</h1> Etiquetas FTL:
<p>We have these animals:
<ul>
Comentarios:
<#list animals as being>[BR]
<li>${being.name} for ${being.price} Euros
</#list>
</ul>
</body>
</html>
Freemarker 6 / 15 Freemarker.sxw
Fecha: 16/09/2003 Versión: 1.0
CERVANTES
Formación
Freemarker.sxw
Freemarker
Versión: 1.0
Emitido por: NHT-Norwick Fecha : 16/09/2003
4. INTERPOLACIONES
Los números también podemos mostrarlos con ${}, pero la forma #{} es mucho más potente, ya
que podemos formatear el número para que se muestre con los decimales que deseamos. Esto
se consigue pasando el parámetro formato, que pueden ser los siguientes:
• Especificar el número de decimales: esto se cosigue pasando la letra m
seguido del número de decimales, por ejemplo m1 mostrará el número siempre
con un decimal.
• Especificar el número máximo de decimales, aunque se usará el mínimo
posible: para ello pasamos como argumento la letra M y el número de
decimales, por ejemplo M3. Cuando indicamos que muestre un número de
decimales menor del que tiene el número, se mostrará el número redondeado.
• Especificar el número mínimo y máximo de decimales: para ello pasamos
los argumentos m y M, por ejemplo m1M3 indica un mínimo de un decimal y un
máximo de 3.
Ejemplo:
x=2.582 e y=4:
Freemarker 7 / 15 Freemarker.sxw
Fecha: 16/09/2003 Versión: 1.0
CERVANTES
Formación
Freemarker.sxw
Freemarker
Versión: 1.0
Emitido por: NHT-Norwick Fecha : 16/09/2003
En FreeMarker se escriben las directivas o instrucciones usando etiquetas FTL. Estas etiquetas
pueden ser de 3 tipos:
En cuanto a las directivas, existen 2 tipos principales:
• Directivas predefinidas: son un grupo de directivas que vienen integradas con
FreeMarker, y que normalmente nos serán suficientes para programar la
plantilla. Comienza con <# y a continuación el nombre de la directiva; por
ejemplo <#list> .
• Directivas definidas por el usuario: FreeMarker permite crear nuestras propias
directivas, y se usarán de la misma forma que las predefinidas, con la única
diferencia de que en vez de usar el comienzo de etiqueta <# se usa <@ .
<#macro saludo>
<span class=”letra01”>Hola!</span>
</#macro>
<@saludo/> Hola!
Este es un ejemplo muy sencillo, pero podemos hacer macros muy potentes. Las macros
permiten recibir parámetros lo que nos permitirá complicar nuestras directivas hasta el grado que
queramos.
Freemarker 8 / 15 Freemarker.sxw
Fecha: 16/09/2003 Versión: 1.0
CERVANTES
Formación
Freemarker.sxw
Freemarker
Versión: 1.0
Emitido por: NHT-Norwick Fecha : 16/09/2003
Directivas predefinidas
assign:
Esta directiva se utiliza para crear variables o modificar el valor de estas. Esta es su sintaxis:
<#assign nombre_variable1=valor nombre_variable2=valor ... />
También podemos asignar a las variables valores de otras variables.
La sentencia condicional que todos los programadores conocen tiene la forma:
<#if condicion>
...
<#elseif condicion2>
...
<#else>
...
</#if>
Freemarker 9 / 15 Freemarker.sxw
Fecha: 16/09/2003 Versión: 1.0
CERVANTES
Formación
Freemarker.sxw
Freemarker
Versión: 1.0
Emitido por: NHT-Norwick Fecha : 16/09/2003
<#assign x=5>
<#if x == 1>
x es 1
<#elseif x == 2>
x es 2
<#elseif x == 3>
x no es ni 1 ni 2 x no es ni 1 ni 2
<#/if>
<#assign animal=”pato”>
<#if animal == “perro”>
El animal es un perro
<#else>
No es un perro, es un ${animal} No es un perro, es un
</#if> pato
list, break:
Podemos realizar iteraciones sobre elementos de tipo secuencia de la forma:
NOTA: Para el ejemplo hemos creado la variable seq y la hemos dado un valor.
Esto es a modo de ejemplo, porque esta variable y el resto siempre serán creadas
en el modelo de datos.
Freemarker 10 / 15 Freemarker.sxw
Fecha: 16/09/2003 Versión: 1.0
CERVANTES
Formación
Freemarker.sxw
Freemarker
Versión: 1.0
Emitido por: NHT-Norwick Fecha : 16/09/2003
BUILT-IN
Los builtin son comandos que nos permiten formatear la salida de las interpolaciones. Las más
importantes y que más usaremos serán los builtin para:
• Cadenas de texto.
• Números.
• Fechas y horas.
• Variables no definidas.
No explicaremos todos los builtin existentes, simplemetne nos limitaremos a los que
recomendamos utilizar para optimizar la separación de lógica y presentación.
Freemarker 11 / 15 Freemarker.sxw
Fecha: 16/09/2003 Versión: 1.0
CERVANTES
Formación
Freemarker.sxw
Freemarker
Versión: 1.0
Emitido por: NHT-Norwick Fecha : 16/09/2003
<#assign num=42/>
${num} 42
${num?string.currency} 42,00
<#setting locale=”en_US”>
${num?string.currency} 42.00
- definir un formato: podemos definir el formato exacto de salida del número usando la
sintaxis de formato para números decimales en Java.
${12345678?string(",##0.00")} 12,345,678.00
Freemarker 12 / 15 Freemarker.sxw
Fecha: 16/09/2003 Versión: 1.0
CERVANTES
Formación
Freemarker.sxw
Freemarker
Versión: 1.0
Emitido por: NHT-Norwick Fecha : 16/09/2003
Para dar formato a las fechas y horas podemos usar los formatos predefinidos que vienen con
FreeMarker o indicar nosotros el formato que queramos.
Es importante saber que las fechas y horas de los formatos predefinidos se mostrarán de acuerdo
a la configuración local. Por ejemplo, si la configuración local está para Estados Unidos, el
sistema mostraría lo siguiente:
${hora?string.short} 9:24 PM
${hora?string.medium} 9:24:44 PM
${hora?string.long} 9:24:44 PM PDT
${fecha?string.short} 4/8/03
${fecha?string.medium} Apr 8, 2003
${fecha?string.long} April 8, 2003
Para indicar nosotros el formato con el que queremos mostrar la información se haría de la
siguiente forma:
${hora?string(“HH:mm:ss”)} 21:24:44
${fecha?string(“dd/mm/yyyy”)} 04/08/2003
Cada letra especifica un campo, por ejemplo la H mayúscula representa las horas. Si
escribiremos dos HH indicamos que queremos mostrar las horas con dos dígitos.
${user?default(“Anónimo”)} Anónimo
<#assign user=”Juan”>
${user?default(“Anónimo”)} Juan
Freemarker 14 / 15 Freemarker.sxw
Fecha: 16/09/2003 Versión: 1.0
CERVANTES
Formación
Freemarker.sxw
Freemarker
Versión: 1.0
Emitido por: NHT-Norwick Fecha : 16/09/2003
REFERENCIAS
Freemarker.
http://www.freemarker.org
Copyright (c) 2003, New High Technologies of Norwick S.L. . Este
documento puede ser distribuido solo bajo los términos y condiciones de la
licencia de Documentación de javaHispano v1.0 o posterior (la última versión
se encuentra en http://www.javahispano.org/licencias/).
Freemarker 15 / 15 Freemarker.sxw
Fecha: 16/09/2003 Versión: 1.0