我想将一个元素添加到 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') )
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top