自由标记在宏

时间:2015-08-02 10:44:49

标签: macros whitespace freemarker

我希望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());

2 个答案:

答案 0 :(得分:0)

白色空间条纹的工作方式(记录在案)。您可以在Configuration完全关闭,但是在#if - s等处会有很多不需要的空白区域,或者您可以添加<#nt> - 在这些标签之后。

答案 1 :(得分:0)

如果您只想在特定模板中包含所有空格,则可以添加<#ftl strip_whitespace=false/>

否则,如果要在所有模板中实现此目的,可以在config

上设置属性
config.setWhitespaceStripping(false); 

如果要压缩模板中的某些空格,可以使用<#compress>...</#compress>指令。