1

什么是速度模板中最简洁/可读的方式,以使用分隔符连接多个字段,同时在不添加多余分隔符的情况下省略空字符串或空字符串?

例如,我们有一个工具提示或约会,如下所示:

Appointment ($number) [with $employee] [-] [$remarks] [-] [$roomToVisit]

我用括号表示可选数据。填写后通常会显示为

Appointment (3) with John - serve Java coffee - ballroom

当 $remarks 为空但 $roomToVisit 不为空时,变为:

Appointment (3) with John - ballroom

当 $roomToVisit 为空时,我们得到:

Appointment (3) with John - serve Java coffee

当两者都为空时:

Appointment (3) with John

奖励:也使字段前缀可选。当只有 $employee 为空时,我们应该得到:

Appointment (3) serve Java coffee - ballroom

理想情况下,我希望速度模板看起来与第一个代码框非常相似。如果这是不可能的,你将如何用最少的分散注意力的代码标签来实现这一点?

类似的想法(速度示例可能会有所帮助,但更冗长):

4

1 回答 1

0

我发现您可以通过在上下文中将 Java 类注册为工具来调用自己的 Java 方法。一个现有的例子是DisplayTool。我创建了一个 VelocityStringUtil 类,其中包含用于条件前缀和连接的方法“pre”和 vararg 方法“join”,并将其注册为:

context.put("text", new VelocityStringUtil());

使用它,以下模板创建预期的输出:

Appointment ($number)$text.pre(' ', $text.join(' - ', $text.pre('with ', $employee), $remarks, $roomToVisit))

如您所见,它仍然有点难看,但我认为它比使用预定义指令更好(除非我遗漏了一些东西)。

于 2013-10-18T12:42:38.197 回答