package com.nfwork.dbfound.web.ui;
import java.io.File;
import java.util.Locale;
import javax.servlet.ServletContext;
import com.nfwork.dbfound.core.DBFoundConfig;
import com.nfwork.dbfound.exception.DBFoundRuntimeException;
import com.nfwork.dbfound.util.LogUtil;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.TemplateExceptionHandler;
public class FreemarkFactory {
private static Configuration config;
/**
* 得到config
*
* @return
*/
public static Configuration getConfig(ServletContext context) {
if (config == null) {
init(context);
}
return config;
}
public static void setConfig(Configuration config) {
FreemarkFactory.config = config;
}
/**
* 初始化路径
*
* @param context
*/
public synchronized static void init(ServletContext context) {
if (config == null) {
try {
config = new Configuration();
config.setEncoding(Locale.getDefault(), "utf-8");
// 设置对象包装器
config.setObjectWrapper(new DefaultObjectWrapper());
// 设置异常处理器
config
.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
// 从什么地方加载freemarker模板文件
String ftlPath = context.getRealPath("/DBFoundUI/template");
if (ftlPath == null) {
ftlPath = DBFoundConfig.getProjectRoot()
+ "/DBFoundUI/template";
}
File fold = new File(ftlPath);
if (fold.exists() == false) {
throw new DBFoundRuntimeException(
"/DBFoundUI/template 没有找到,请确认是否加入DBFoundUI到webRoot下");
}
config.setDirectoryForTemplateLoading(fold);
} catch (Exception e) {
LogUtil.error(e.getMessage(), e);
}
}
}
}