Freemarker 在宏之后删除换行符
Freemarker removing newlines after macro
我希望 Freemarker 在调用我的宏后保留换行符。
我搞砸了关闭标签 <@test></@test>
没有任何区别。我也尝试在指令中使用 body
但那是空的。
也许我可以访问标签后的模板内容,如果那是一个换行符,那么我可以打印它。不过好像有点乱。
我的模板包含:
<@test/> <@test/>
<@test/>
<@test/>
这是印刷品:
test test
test
test
但我想打印:
test test
test
test
我是这样定义指令的:
public class TestMacro implements TemplateDirectiveModel {
@Override
public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
throws TemplateException, IOException {
env.getOut().append("test");
}
}
这是我将其添加到配置中的方式:
Configuration config = configurer.createConfiguration();
config.setSharedVariable("test", new TestMacro());
这就是白色 space 条纹的工作原理(这已记录在案)。您可以在 Configuration
中完全关闭 if ,尽管这样您最终会在 #if
-s 等周围出现很多不需要的白色-space,或者您可以添加 <#nt>
-s 在那些标签之后。
如果您只想在特定模板中包含所有空格,您可以添加 <#ftl strip_whitespace=false/>
。
否则,如果你想在所有模板中实现这一点,你可以在 config
上设置 属性
config.setWhitespaceStripping(false);
如果你想压缩模板中的一些空白,你可以使用 <#compress>...</#compress>
指令。
我希望 Freemarker 在调用我的宏后保留换行符。
我搞砸了关闭标签 <@test></@test>
没有任何区别。我也尝试在指令中使用 body
但那是空的。
也许我可以访问标签后的模板内容,如果那是一个换行符,那么我可以打印它。不过好像有点乱。
我的模板包含:
<@test/> <@test/>
<@test/>
<@test/>
这是印刷品:
test test
test
test
但我想打印:
test test
test
test
我是这样定义指令的:
public class TestMacro implements TemplateDirectiveModel {
@Override
public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
throws TemplateException, IOException {
env.getOut().append("test");
}
}
这是我将其添加到配置中的方式:
Configuration config = configurer.createConfiguration();
config.setSharedVariable("test", new TestMacro());
这就是白色 space 条纹的工作原理(这已记录在案)。您可以在 Configuration
中完全关闭 if ,尽管这样您最终会在 #if
-s 等周围出现很多不需要的白色-space,或者您可以添加 <#nt>
-s 在那些标签之后。
如果您只想在特定模板中包含所有空格,您可以添加 <#ftl strip_whitespace=false/>
。
否则,如果你想在所有模板中实现这一点,你可以在 config
上设置 属性config.setWhitespaceStripping(false);
如果你想压缩模板中的一些空白,你可以使用 <#compress>...</#compress>
指令。