O Chris já publicou aqui um tutorial de Velocity, uma linguagem de templates que estou usando diariamente no trabalho.
Como eu não conhecia a linguagem até começar a trabalhar aqui, existem várias coisas que são são novidades para mim – e os blogs e docmentações estão ajudando a aumentar a produtividade.
Para compartilhar o que aprendi (e servir para minhas consultas futuras), fiz algumas contribuições com posts aqui no O Desenvolvedor, e entre as relacionadas ao Velocity (e Java) destaco duas:
Velocity – Loop de includes usando variáveis
Estava estudando métodos para dar include (parse) em arquivos com o Velocity, e em um caso específico queria incluir diversos arquivos através de um loop: código enxuto, ao invés de adicionar uma linha para cada parse.
Se você não sabe como funciona o parse no Velocity, veja este exemplo de código.
Para ilustrar este post, criei um "problema" e abaixo explico a solução.
Problema
Necessário fazer diversos includes a partir de uma lista de arquivos (string).
Solução
Pegar a lista, transformar em array e usar o parse para cada elemento do array
Supondo que você tem a string: "include1,include2,include5" e estes são os nomes de arquivos que você precisa incluir, o primeiro passo é dar um split pelas vírgulas e transformar isso em um array.
Primeiro setamos uma variável ($inc) com a lista de includes que serão feitos
#set($inc = "include3,include4,include9")
Abaixo utilizo o método split (ler documentação) na variável $inc gerada anteriormente, separado os elementos pela vírgula e criando um array com os nomes dos arquivos (o array poderia ser criado diretamente, porém usei o string para enriquecer mais o exemplo).
#set($arr = $stringUtils.split($inc,","))
Pronto, agora temos um array com o nome dos arquivos e é aqui que a "mágica" começa. Criamos um loop (foreach) para o array, e dentro dele definimos uma variável com o caminho do arquivo que será incluído e chamamos o parse para a variável do caminho ($dir).
#foreach($o in $arr)
#set($dir = "includes/vm/"+$o+".vm")
#parse($dir)
#end
Tentei concatenar o nome do arquivo (elemento do array) com o caminho direto na linha do parse e não funcionou
. O workarround de definir a variável antes resolve o problema!
Espero que seja útil, esse script pode ser bastante útil para o controle de includes!