Predefinición de variable:#set ($valok = "hello foxdevelop")
Límite de variable ${} y diferencias de acceso con .
| Código | Resultado renderizado | Explicación |
|---|---|---|
$valok | hello foxdevelop | Salida básica de variable |
$valok.com | hello foxdevelop.com | Velocity intenta invocar la propiedad/método cn del objeto valok; la cadena no dispone de ese método, se imprime la variable y el sufijo tal cual |
${valok}.com | hello foxdevelop.com | {} delimita la variable. Una vez renderizada valok, se concatena el texto literal .com (sintaxis recomendada) |
$!valok.com | hellofoxdevelop.com | Referencia silenciosa $!: funciona igual que $valok si existe la variable; devuelve cadena vacía en lugar de mostrar $xxx si no existe |
${valok.com} | vacío | Intenta leer la propiedad valok.com. La cadena no tiene esa propiedad, la variable no existe. Usa $!{valok.com} para obtener cadena vacía |
${valok}.cn ✅ Concatenar variable + sufijo${valok.cn} ❌ Acceder a la propiedad cn del objeto valok
Comillas simples / dobles & fusión de variables
| Código | Resultado renderizado | Explicación |
|---|---|---|
what$valok | whathello foxdevelop | Concatenación directa, Velocity detecta automáticamente el límite de variable |
what$"valok" | what$»valok» | ❌ Sintaxis no válida. No se puede poner comilla justo después de $, no se interpreta la variable |
what"$valok" | what»hello foxdevelop« | Las comillas son caracteres ordinarios dentro de plantilla, no activan análisis de cadena; la variable se resuelve correctamente |
what'$valok' | what’hello foxdevelop‘ | Mismo comportamiento, las comillas simples son caracteres literales |
$valokwhat | $valokwhat | ❌ Variable no reconocida. Velocity toma valokwhat como nombre completo de variable y muestra el texto original si no la encuentra |
${valok}what | hello foxdevelopwhat | ✅ Las llaves delimitan la variable, soluciona la fusión entre variable y texto |
Resumen
- Usa siempre
${nombreVariable}cuando la variable se une a otro texto
Incorrecto:$valokwhat;Correcto:${valok}what - Para añadir sufijo: escribe
${valok}.cn, no${valok.cn} - Referencia silenciosa
$!variable: devuelve vacío si no existe la variable, no imprime$xxx - Las comillas dentro del HTML de plantilla son caracteres normales;Solo dentro de asignaciones #set las comillas simples (no resuelven variables) y dobles (resuelven variables) tienen comportamiento distinto
#set($a = "$valok") // Comillas dobles: resuelve variable, a=hello bamn
#set($a = '$valok') // Comillas simples: no resuelve variable, a=$valokLenguaje del código: PHP (php)
Notas complementarias sobre límites de variable
Previous: Iterar colecciones
Next: Métodos de extensión