This commit is contained in:
Looly 2021-09-09 23:16:58 +08:00
parent 6187217717
commit b4b02f3af2

View File

@ -1,39 +1,40 @@
package cn.hutool.extra.template.engine.freemarker; package cn.hutool.extra.template.engine.freemarker;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Serializable;
import java.io.Writer;
import java.util.Map;
import cn.hutool.core.io.IORuntimeException; import cn.hutool.core.io.IORuntimeException;
import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.IoUtil;
import cn.hutool.extra.template.AbstractTemplate; import cn.hutool.extra.template.AbstractTemplate;
import cn.hutool.extra.template.TemplateException; import cn.hutool.extra.template.TemplateException;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Serializable;
import java.io.Writer;
import java.nio.charset.Charset;
import java.util.Map;
/** /**
* Freemarker模板实现 * Freemarker模板实现
* *
* @author looly * @author looly
*/ */
public class FreemarkerTemplate extends AbstractTemplate implements Serializable{ public class FreemarkerTemplate extends AbstractTemplate implements Serializable{
private static final long serialVersionUID = -8157926902932567280L; private static final long serialVersionUID = -8157926902932567280L;
freemarker.template.Template rawTemplate; freemarker.template.Template rawTemplate;
/** /**
* 包装Freemarker模板 * 包装Freemarker模板
* *
* @param beetlTemplate Beetl的模板对象 {@link freemarker.template.Template} * @param beetlTemplate Beetl的模板对象 {@link freemarker.template.Template}
* @return {@link FreemarkerTemplate} * @return this
*/ */
public static FreemarkerTemplate wrap(freemarker.template.Template beetlTemplate) { public static FreemarkerTemplate wrap(freemarker.template.Template beetlTemplate) {
return (null == beetlTemplate) ? null : new FreemarkerTemplate(beetlTemplate); return (null == beetlTemplate) ? null : new FreemarkerTemplate(beetlTemplate);
} }
/** /**
* 构造 * 构造
* *
* @param freemarkerTemplate Beetl的模板对象 {@link freemarker.template.Template} * @param freemarkerTemplate Beetl的模板对象 {@link freemarker.template.Template}
*/ */
public FreemarkerTemplate(freemarker.template.Template freemarkerTemplate) { public FreemarkerTemplate(freemarker.template.Template freemarkerTemplate) {
@ -53,7 +54,7 @@ public class FreemarkerTemplate extends AbstractTemplate implements Serializable
@Override @Override
public void render(Map<?, ?> bindingMap, OutputStream out) { public void render(Map<?, ?> bindingMap, OutputStream out) {
render(bindingMap, IoUtil.getWriter(out, this.rawTemplate.getEncoding())); render(bindingMap, IoUtil.getWriter(out, Charset.forName(this.rawTemplate.getEncoding())));
} }
} }