我正在使用Velocity(1.5)使用模板+数据源生成一些文本。
我需要处理新行,因为合并结果不是HTML而是文本。
我有这种模板(beanInContext是一个数据矩阵,就像excel电子表格一样)
[begin TPL]
$beanInContext.prepare("someData");
$beanInContext.anotherOperation(1234);
#foreach( $row in $beanInContext.rows() )
#foreach($data in $row.data())
$data
#end
#end
[end TPL]
我希望合并的结果是这样的:
a1 b1 c1
a2 b2 c2
...
但我有类似的东西:
a1
b1
c1
a2
b2
c2
...
使用类似的模板引擎freemarker时,我使用了< #compress> 指令来实现这种格式化。
有人知道如何配置速度引擎以避免这种回车混乱?
答案 0 :(得分:3)
Velocity与JSP一样,目前不提供空白管理的实际帮助。它已经讨论得很多,但没有人加紧实施这个功能。你会发现使用像JTidy这样的东西来后处理Velocity输出要好得多。预计Velocity 2.0的空白处理会有所改善,但是按照这个速度,不要指望Velocity 2.0能用几年。工作很慢。
如果空格控制很关键并且后处理不是一个选项,我建议使用Freemarker。
如果你必须使用Velocity,请注意1.5有一些重大的性能问题。我强烈建议升级到1.7。
答案 1 :(得分:2)
我可能没有完全正确,但这是如何做到的基本技巧:
> [begin TPL]
> $beanInContext.prepare("someData");
> $beanInContext.anotherOperation(1234);
> #foreach( $row in $beanInContext.rows() )
> #**##foreach($data in $row.data())##
> #* *#$data##
> #**##end##
> #end
> [end TPL]