Pergunta

Eu quero adicionar um elemento à lista na minha Velocity macro. É este o único caminho para evitar texto 'true' aparecendo na saída Velocity?

#set($path = [])
#set($swallow = "a")

#set ($swallow = $path.add("blaablaa"))
Foi útil?

Solução

Eu tenho que concordar com Terence Parr (pai de StringTemplate ) que tem comentários relevantes em entrevista Artima e um bom papel no modelo-view separação .

Modelos deve ser restrito a apresentação pura. Assim como não deve colocar detalhes da camada de apresentação do modelo, não devemos colocar manipulação de dados em nossos modelos. Fazendo quer geralmente acaba tornando a manutenção mais difícil, e ainda torna mais difícil saber , onde para fazer a manutenção.

Com base na minha própria experiência com tanto Velocity e StringTemplate, eu fortemente sugiro tomar o problema em sua pergunta (artefatos de manipulação de dados, tornando o modelo mais complicado) como uma dica e movendo toda a manipulação de estruturas de dados na camada de Java .

Outras dicas

Sim, se você quiser fechá-la para cima, então #set é seu amigo. Muitas pessoas atalho isso com uma macro assim:

#macro( call $this )#set( $stfu = $this )#end

Em seguida, você pode abreviar a

#call( $path.add('blaablaa') )
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top