All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.kangyonggan.app.freemarker.TemplateDirectiveBodyOverrideWraper Maven / Gradle / Ivy

The newest version!
package com.kangyonggan.app.freemarker;

import freemarker.core.Environment;
import freemarker.template.TemplateDirectiveBody;
import freemarker.template.TemplateException;
import freemarker.template.TemplateModel;

import java.io.IOException;
import java.io.Writer;

/**
 * @author kangyonggan
 * @since 16/4/29
 */
public class TemplateDirectiveBodyOverrideWraper implements TemplateDirectiveBody, TemplateModel {
    private TemplateDirectiveBody body;
    public TemplateDirectiveBodyOverrideWraper parentBody;
    public Environment env;

    public TemplateDirectiveBodyOverrideWraper(TemplateDirectiveBody body,
                                               Environment env) {
        super();
        this.body = body;
        this.env = env;
    }

    @Override
    public void render(Writer out) throws TemplateException, IOException {
        if (body == null) {
            return;
        }
        TemplateDirectiveBodyOverrideWraper preOverridy = (TemplateDirectiveBodyOverrideWraper) env.getVariable(DirectiveUtils.OVERRIDE_CURRENT_NODE);
        try {
            env.setVariable(DirectiveUtils.OVERRIDE_CURRENT_NODE, this);
            body.render(out);
        } finally {
            env.setVariable(DirectiveUtils.OVERRIDE_CURRENT_NODE, preOverridy);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy