题
我想将一个元素添加到 Velocity 宏的列表中。这是避免“真实”文本出现在 Velocity 输出中的唯一方法吗?
#set($path = [])
#set($swallow = "a")
#set ($swallow = $path.add("blaablaa"))
解决方案
我必须同意特伦斯·帕尔(Terence Parr)的观点( 字符串模板)谁有相关评论 阿蒂玛采访 和 关于模型视图分离的好论文.
模板应仅限于纯粹的演示。正如我们不应将表示层详细信息放入模型中一样,我们也不应将数据操作放入模板中。这样做通常最终会使维护变得更加困难,甚至使了解变得更加困难 在哪里 进行维护。
根据我自己使用 Velocity 和 StringTemplate 的经验,我强烈建议您将问题中的问题(数据操作的伪影使模板变得更加复杂)作为提示,并将所有数据结构的操作移至 Java 层。
其他提示
是的,如果你想关闭它,然后#SET是你的朋友。很多人这个快捷方式,像这样的宏:
#macro( call $this )#set( $stfu = $this )#end
然后可以缩写为
#call( $path.add('blaablaa') )
不隶属于 StackOverflow