Macros Freemarker在宏后删除换行符

Macros Freemarker在宏后删除换行符,macros,whitespace,freemarker,Macros,Whitespace,Freemarker,我希望Freemarker在调用我的宏后保留换行符 我把标签的关闭搞得一团糟,没有任何区别。我也尝试过使用指令中的主体,但它是空的 也许我可以访问标签后面的模板内容,如果是换行符,那么我可以打印它。但这似乎有点混乱 我的模板包含: <@test/> <@test/> <@test/> <@test/> 但我想把它打印出来: test test test test 我是这样定义指令的: public class TestMacro imp

我希望Freemarker在调用我的宏后保留换行符

我把标签的关闭搞得一团糟,
没有任何区别。我也尝试过使用指令中的
主体
,但它是空的

也许我可以访问标签后面的模板内容,如果是换行符,那么我可以打印它。但这似乎有点混乱

我的模板包含:

<@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());

这就是空白条带化的工作原理(这是有文档记录的)。您可以在
配置中完全关闭if,尽管这样会在
#if
-s等周围留下大量不需要的空白,或者可以在这些标记后添加
-s。

这就是空白条带的工作方式(这是有文档记录的)。您可以在
配置中完全关闭if,尽管这样会在
\if
-s等周围留下大量不需要的空白,或者您可以在这些标记后添加
-s。

如果您只想在特定模板中包含所有空白,您可以添加

否则,如果要在所有模板中实现这一点,可以在配置文件上设置属性

config.setWhitespaceStripping(false); 
如果要压缩模板中的一些空白,可以使用
..
指令。

如果只想在特定模板中包含所有空白,可以添加

否则,如果要在所有模板中实现这一点,可以在配置文件上设置属性

config.setWhitespaceStripping(false); 

如果您想压缩模板中的一些空白,可以使用
指令。

谢谢您将指针指向正确的方向,但这并不能完全回答问题。我想了解有关如何在配置中设置它的更多详细信息。我发现在回答问题时,示例总是很有用的。这取决于您如何配置FreeMarker,这通常取决于您使用的框架。通常类似于
configuration.setWhiteSpaceStriping(false)或
文件中的
whitespace\u stripping=false
.properties
等。感谢指向正确方向的指针,但这并不能完全回答问题。我正在寻找有关如何在配置中设置它的更多详细信息。我发现在回答问题时,示例总是很有用的。这取决于您如何配置FreeMarker,这通常取决于您使用的框架。通常类似于
configuration.setWhiteSpaceStriping(false)或
文件中的
空白\u stripping=false
.properties
等。