I. Pasar objetos de entidad a la plantilla
1. Clase de entidad PageInfo
Hasta ahora solo pasábamos cadenas de texto simples. Esto resulta poco eficiente y dificulta el mantenimiento. Al encapsular los datos en objetos de entidad el código es mucho más claro.
public class PageInfo
{
private bool IsShowImage;
public bool IsShowImage1
{
get { return IsShowImage; }
set { IsShowImage = value; }
}
}Lenguaje del código: C# (cs)
- Campo privado
IsShowImage, expuesto mediante la propiedad públicaIsShowImage1 - Acceso desde plantilla:
$info.IsShowImage1
2. Cargar datos en el contexto
//Contenedor de contexto de plantilla
IContext context = new VelocityContext();
PageInfo pi = new PageInfo();
pi.IsShowImage1 = true;
//Guardar el objeto pi en el contexto con la clave info
context.Put("info",pi);
//Ejemplo de variable de cadena
context.Put("infotitle","Hola");Lenguaje del código: C# (cs)
context.Put("nombreClave",datos):envía datos a la plantilla, la plantilla los lee con $nombreClave.
II. Sintaxis principal de plantillas Velocity
1. Símbolo de directiva #
Las instrucciones que empiezan por # son directivas. Las más usadas:#if, #else, #end, #foreach, #set, #include
Ejemplo de renderizado condicional:
Prepara dos imágenes y colócalas en la carpeta Contents/Images de la raíz del sitio web. Cambia el valor de IsShowImage1 para visualizar una imagen u otra.
#if($info.IsShowImage1)
<img src="./Contents/Images/a.gif" />
#else
<img src="./Contents/Images/b.gif" />
#endLenguaje del código: PHP (php)
Lógica: muestra a.gif cuando IsShowImage1=true, en caso contrario muestra b.gif
2. Símbolo de variable $
$nombreVariable:muestra el valor de la variable${nombreVariable}:delimita el límite de variable (¡muy importante!)
Caso práctico: texto justo después de la variable, el motor no distingue dónde termina el nombre de variable.
Forma incorrecta: $infotitlefoxdevelop.com
El motor interpreta todo como una variable infotitlefoxdevelop que no existe.
Forma correcta: ${infotitle}foxdevelop.com
El motor resuelve la variable infotitle y concatena la cadena foxdevelop.comLenguaje del código: PHP (php)
3. Modificador de salida silenciosa ! → $!nombreVariable
Comportamiento por defecto: si la variable no existe, se imprime tal cual el texto $nombreVariable$!nombreVariable:si la variable no existe o es null, devuelve vacío sin imprimir el signo dólar
Ejemplo comparativo:
| Sintaxis | Variable existe(valor=»Hola») | Variable no existe |
|---|---|---|
$infotitle | Hola | $infotitle |
$!infotitle | Hola | (vacío, no muestra nada) |
${infotitle} | Hola | ${infotitle} |
$!{infotitle} | Hola | vacío |
Código de prueba completo:
${infotitle}foxdevelop.com <br/>
$!infotitlefoxdevelop.com <br/>
$infotitle <br/>
$!infotitle <br/>Lenguaje del código: HTML, XML (xml)
Resumen
- Si concatenas texto después de una variable, envuélvela siempre con
${variable} - En entorno de producción usa preferiblemente
$!{nombreVariable}, evita que valores nulos impriman$xxxy rompan el diseño - Para comprobar propiedades booleanas con
#ifescribe directamente#if($info.IsShowImage1), no hace falta poner==true
Sintaxis básica de plantillas