0

我想在 Velocity 宏的列表中添加一个元素。这是避免“真实”文本出现在 Velocity 输出中的唯一方法吗?

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

#set ($swallow = $path.add("blaablaa"))
4

2 回答 2

6

是的,如果你想闭嘴,那么#set 就是你的朋友。许多人使用这样的宏来简化它:

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

然后你可以缩写为

#call( $path.add('blaablaa') )
于 2009-02-02T22:33:41.970 回答
3

我必须同意 Terence Parr(StringTemplate之父)的观点,他在Artima 采访中发表了相关评论,并发表了一篇关于模型视图分离的好论文

模板应仅限于纯粹的展示。正如我们不应该将表示层的细节放在模型中一样,我们也不应该将数据操作放在我们的模板中。做任何一个通常都会使维护变得更加困难,甚至更难知道在哪里进行维护。

根据我自己对 Velocity 和 StringTemplate 的经验,我强烈建议您将问题中的问题(数据操作的工件使模板更复杂)作为提示,并将所有数据结构的操作移至 Java 层。

于 2009-01-29T14:02:02.537 回答