我想在Velocity宏的列表中添加一个元素。这是避免出现在Velocity输出中的“真实”文本的唯一方法吗?
#set($path = [])
#set($swallow = "a")
#set ($swallow = $path.add("blaablaa"))
答案 0 :(得分:6)
是的,如果你想关闭它,那么#set就是你的朋友。很多人用这样的宏来快捷:
#macro( call $this )#set( $stfu = $this )#end
然后你可以缩写为
#call( $path.add('blaablaa') )
答案 1 :(得分:3)
我必须同意在StringTemplate和an Artima interview中有相关评论的Terence Parr(a good paper on model-view separation的父亲)。
模板应限于纯粹的演示文稿。正如我们不应该在模型中放置表示层细节一样,我们不应该将数据操作放在模板中。做任何一种情况通常最终会使维护变得更加困难,甚至更难以了解 来进行维护。
根据我自己对Velocity和StringTemplate的经验,我强烈建议将问题中的问题(数据操作的工件使模板更复杂)作为提示并将数据结构的所有操作移到Java层中