速度模板中最简洁/可读的方法是使用分隔符连接多个字段,同时在不添加多余分隔符的情况下省略空字符串或空字符串?
作为一个例子,我们有一个工具提示或约会,如:
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
理想情况下,我希望速度模板看起来与第一个代码框非常相似。如果这是不可能的,那么如何通过最少的令人分心的代码标签实现这一目标呢?
类似的想法(速度示例可能会有所帮助,但更加冗长):
答案 0 :(得分:0)
我发现您可以通过在上下文中将Java类注册为工具来调用自己的Java方法。现有示例是DisplayTool。我使用方法“pre”和vararg方法“join”创建一个VelocityStringUtil类,用于条件前缀和连接,并将其注册为:
context.put("text", new VelocityStringUtil());
使用此选项,以下模板将创建预期输出:
Appointment ($number)$text.pre(' ', $text.join(' - ', $text.pre('with ', $employee), $remarks, $roomToVisit))
你可以看到它仍然有点难看,但我认为它比使用预定义的指令更好(除非我遗漏了一些东西)。