Macros 速度集合指令中的新行

Macros 速度集合指令中的新行,macros,velocity,Macros,Velocity,如何使用set在velocity模板中添加换行符?这是行不通的 #(set $some = "$a \n $b") 逐字打印\n 这样做也不起作用: VelocityContext context = new VelocityContext(); context.put("esc", new EscapeTool()); Velocity.evaluate(context, writer, "LOG", template); 您可以从中使用$esc.n或其同义词$esc.newline来执行

如何使用set在velocity模板中添加换行符?这是行不通的

#(set $some = "$a \n $b")
逐字打印\n

这样做也不起作用:

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

您可以从中使用
$esc.n
或其同义词
$esc.newline
来执行此操作:

#set($some = $a + $esc.n + $b)
如何初始化工具:

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

您可以从中获取默认的velocity-tools.xml(它也包含在tools jar中),并启用您需要的工具。

您知道,在velocity的现代版本中,您只需插入一行中断符

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

WTF是速度?您可能需要提供更多上下文。@leppie:apachevelocity-它是一个模板引擎@fastcodejava:为什么字符串中需要换行符?只需将换行符直接写入输出。@serg-谢谢。如何将
EscapeTool
添加到上下文?我做了
context.put(“esc”,新的EscapeTool())
。它不起作用。这不是一个web应用程序,只是一个带有velocity宏的普通java代码。@fastcodejava,因为它不是初始化工具的正确方法。为什么不使用我在答案中发布的内容?为什么velocity没有\n?