Sintaxis básica de plantillas

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ública IsShowImage1
  • 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:

SintaxisVariable existe(valor=»Hola»)Variable no existe
$infotitleHola$infotitle
$!infotitleHola(vacío, no muestra nada)
${infotitle}Hola${infotitle}
$!{infotitle}Holavací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

  1. Si concatenas texto después de una variable, envuélvela siempre con ${variable}
  2. En entorno de producción usa preferiblemente $!{nombreVariable}, evita que valores nulos impriman $xxx y rompan el diseño
  3. Para comprobar propiedades booleanas con #if escribe directamente #if($info.IsShowImage1), no hace falta poner ==true

Sintaxis básica de plantillas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *