I. Passar objetos de entidade para o template
1. Classe de entidade PageInfo
Até agora passávamos apenas strings simples. Essa abordagem é ineficiente e dificulta a manutenção. Empacotar dados em objetos de entidade deixa o código muito mais intuitivo.
public class PageInfo
{
private bool IsShowImage;
public bool IsShowImage1
{
get { return IsShowImage; }
set { IsShowImage = value; }
}
}Code language: C# (cs)
- Campo privado
IsShowImage, exposto pela propriedade públicaIsShowImage1 - Acesso dentro do template:
$info.IsShowImage1
2. Preencher dados do contexto
//Container de contexto do template
IContext context = new VelocityContext();
PageInfo pi = new PageInfo();
pi.IsShowImage1 = true;
//Armazenar objeto pi com a chave info no contexto
context.Put("info",pi);
//Exemplo de variável string
context.Put("infotitle","Olá");Code language: C# (cs)
context.Put("nomeChave",dados):envia dados para o template, o template lê os dados usando $nomeChave.
II. Sintaxe principal do template Velocity
1. Marcador de diretiva #
Instruções iniciadas com # são diretivas. As mais comuns:#if, #else, #end, #foreach, #set, #include
Exemplo de renderização condicional:
Prepare duas imagens e coloque‑as na pasta Contents/Images na raiz do site. Altere o valor de IsShowImage1 para exibir imagens diferentes.
#if($info.IsShowImage1)
<img src="./Contents/Images/a.gif" />
#else
<img src="./Contents/Images/b.gif" />
#endCode language: PHP (php)
Lógica: exibe a.gif quando IsShowImage1=true, senão exibe b.gif
2. Marcador de variável $
$nomeVariavel:exibe valor da variável${nomeVariavel}:delimita o limite da variável (muito importante!)
Cenário: texto logo após a variável, o motor não consegue identificar onde termina o nome da variável.
Forma incorreta: $infotitlefoxdevelop.com
O motor interpreta tudo como variável infotitlefoxdevelop, que não existe.
Forma correta: ${infotitle}foxdevelop.com
O motor resolve a variável infotitle e concatena a string foxdevelop.comCode language: PHP (php)
3. Modificador de saída silenciosa ! → $!nomeVariavel
Comportamento padrão: se a variável não existir, o texto bruto $nomeVariavel é impresso na página$!nomeVariavel:retorna conteúdo vazio quando variável não existe ou é nula, sem imprimir o cifrão
Exemplo comparativo:
| Sintaxe | Variável existe(valor=”Olá”) | Variável inexistente |
|---|---|---|
$infotitle | Olá | $infotitle |
$!infotitle | Olá | (vazio, nada é exibido) |
${infotitle} | Olá | ${infotitle} |
$!{infotitle} | Olá | vazio |
Código de teste completo:
${infotitle}foxdevelop.com <br/>
$!infotitlefoxdevelop.com <br/>
$infotitle <br/>
$!infotitle <br/>Code language: HTML, XML (xml)
Resumo
- Sempre envolva variável com
${variavel}quando for concatenar texto depois dela - Prefira usar
$!{nomeVariavel}em ambiente de produção, evita que valores nulos imprimam$xxxe quebrem o layout - Ao testar propriedade booleana com
#if, escreva diretamente#if($info.IsShowImage1), não é necessário escrever==true
Sintaxe básica de templates