2010-09-08 43 views
3

如何在速度模板中使用set追加新行?這不起作用。速度設置指令中的新行

#(set $some = "$a \n $b") 

字面打印\ n。

這樣做也不起作用:

VelocityContext context = new VelocityContext(); 
context.put("esc", new EscapeTool()); 
Velocity.evaluate(context, writer, "LOG", template); 
+0

跆拳道是速度?您可能想要提供更多的上下文。 – leppie 2010-09-08 12:43:35

+1

@leppie:Apache Velocity - 它是一個模板引擎。 @fastcodejava:爲什麼你需要在你的字符串中換行?只需將換行符直接寫入輸出。 – 2010-09-08 13:20:27

回答

4

您可以使用$esc.n或它的同義詞$esc.newlineEscapeTool此:

#set($some = $a + $esc.n + $b) 

如何初始化工具:

ToolManager velocityToolManager = new ToolManager(); 
velocityToolManager.configure("velocity-tools.xml"); 
VelocityContext context = new VelocityContext(velocityToolManager.createContext()); 

你可以得到默認的velocity-tools.x毫升從here(它也包含在工具jar中)並啓用您需要的工具。

+1

@serg - 謝謝。我如何將'EscapeTool'添加到上下文中?我做了'context.put(「esc」,新的EscapeTool())'。它不起作用。這不是一個Web應用程序,只是一個帶速度宏的普通Java代碼。 – fastcodejava 2010-09-08 17:12:55

+1

@fastcodejava我將它添加到答案中。 – serg 2010-09-08 17:48:57

+0

@serg - 我在做上面的代碼,爲什麼不行? – fastcodejava 2010-09-12 15:13:13

3

要知道,在速度的現代版本,你只要把線打斷他。

#set($haslinebreak = "this has 
a line break")