Java中的任何轻量级模板解决方案都支持条件格式化?

时间:2008-11-06 21:38:08

标签: java string templates template-engine stringtemplate

我正在使用MessageFormat使用如下模板格式化某些地址:

"{0}\n{1}\n{2}\n{3}, {4} {5}"

,其中

  • 0 =街1
  • 1 =街道2
  • 2 =街道3
  • 3 =城市
  • 4 =州
  • 5 = zip

捕获时,大多数这些字段都是可选的。例如,如果没有街道3,我该如何避免空行?我可以使用这样的模板“{0} {1} {2} {3} {4} {5}”,然后相应地替换“street 3 \ n”或“”,但模板不提供对格式化有很大好处。

有没有办法在格式字符串中包含条件?或者是否有另一种,最好是轻量级的模板工具,它支持条件格式化?

8 个答案:

答案 0 :(得分:7)

编辑:重写......

如果您不关心设计,那么您可以随意选择模板引擎,或者因为您喜欢它的名称,或者其他什么。如果您没有选择引擎的标准,那么谁在乎您选择哪一个?

另一方面,如果您关心设计,例如使用模型 - 视图 - 控制器(MVC)设计模式,那么您的选择会迅速减少。

这里的大部分答案都强调了各种模板引擎的强大功能。但MVC的重点在于你不想做更多,因为在你的模板中做更多事情最终会让你非常伤心。业务逻辑不属于View,它属于Model。控制逻辑属于控制器。实际上只有一个模板引擎强制执行MVC模式。如果你不想要MVC模式(也许你正在超越它),那一个引擎仍然可以帮助你不伤害自己,并鼓励你正确划分你的功能。

实际上只有一个好的模板引擎: StringTemplate 。有关原因的详细信息,请参阅http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf

我在多个平台(Python,Java,.Net)以及许多替代方案和StringTemplate规则上使用过它。

做出决定。请享用。祝福。

答案 1 :(得分:5)

其他人已经提到了字符串模板,但我们最近切换到了MVEL(它也做了更多,但实际上并没有增加太多的重量):http://mvel.codehaus.org/(我发现它更容易使用)。

答案 2 :(得分:3)

恕我直言Chunk Templating engine是最好的。 jar文件只有 180 KB !并支持 IF 迭代。这有多酷!

答案 3 :(得分:2)

不知道你认为它有多轻量级,但Apache Velocity是最着名的Java模板引擎之一。

答案 4 :(得分:2)

jguru StringTemplates

这用于建立网站jGuru - 它已经存在了一段时间。

答案 5 :(得分:1)

你可以按照你的方式进行格式化,然后通过用一个'\n'替换多个'\n'的一行来删除空行,例如

result = result.replaceAll("\n+", "\n");

答案 6 :(得分:0)

使用Velocity或Freemarker

答案 7 :(得分:0)

Freemarker非常好。它轻巧,快速,具有条件格式,以及其他一些功能。