繁体   English   中英

如何配置Velocity模板引擎以避免合并结果中的自动回车?

[英]How to configure Velocity template engine to avoid automatic carriage return in merge result?

我正在使用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>指令来实现这种格式化。

有人知道如何配置速度引擎以避免这种回车乱码?

Velocity与JSP一样,目前不提供空白管理的实际帮助。 它已经讨论得很多,但没有人加紧实施这个功能。 你会发现使用像JTidy这样的东西来后处理Velocity输出要好得多。 预计Velocity 2.0的空白处理会有所改善,但是按照这个速度,不要指望Velocity 2.0能用几年。 工作很慢。

如果空格控制很关键并且后处理不是一个选项,我建议使用Freemarker。

如果你必须使用Velocity,请注意1.5有一些重要的性能问题。 我强烈建议升级到1.7。

我可能没有这个完全正确,但这里是如何做到这一点的基本技巧:

> [begin TPL]
> $beanInContext.prepare("someData");
> $beanInContext.anotherOperation(1234);
> #foreach( $row in $beanInContext.rows() )
> #**##foreach($data in $row.data())##
> #*    *#$data##
> #**##end##
> #end 
> [end TPL]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM