0
我想創建兩個單獨的freemarker配置實例。我有抽象類這樣Freemarker多個配置實例
public abstract class AbstractFreemarkerConfiguration {
Logger logger = LoggerFactory.getLogger(AbstractFreemarkerConfiguration.class);
Configuration cfg = new Configuration();
public AbstractFreemarkerConfiguration() throws IOException, TemplateModelException {
logger.info("Initializing Freemarker Config");
cfg.setDefaultEncoding("UTF-8");
setTemplateExceptionHandler();
cfg.setSharedVariable("layout", getLayoutDirectives());
cfg.setTemplateUpdateDelay(0);
cfg.setLocalizedLookup(false);
}
@Autowired
@Qualifier("databaseTemplateLoader")
public void setTemplateLoader(TemplateLoader loader){
logger.info("Setting hibernate teplate loader");
cfg.setTemplateLoader(loader);
}
public abstract void setTemplateExceptionHandler();
}
然後,我有兩個類這樣
@Component("freemarkerProcessor")
public class FreemarkerTemplateProcessor extends AbstractFreemarkerConfiguration implements TemplateProcessor {
public FreemarkerTemplateProcessor() throws IOException, TemplateModelException {
super();
}
private Environment process(Object template) {
Writer writer = new NullWriter();
//do stuff
}
@Override
public List<String> getIncludes(Object template) {
//do stuff
}
@Override
public void setTemplateExceptionHandler() {
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
}
}
和第二個是基本相同的,但模板化異常處理程序設置爲RETHROW_HANDLER
我的問題是,當我這樣做,並且我在IGNORE HANDLER中得到異常時,它將通過RETHROW而忽略它。
在調試中,我確定我必須將Configuration和TemplateExpetionHandler的實例分開,所以我不知道爲什麼我會在IGNORE HANDLER中收到異常。
配置設置是否存在某些全局虧損或者我不知道的事情?
感謝您的回覆。
有什麼類型的例外是你看到這個? TemplateExceptionHandler只處理TemplateException的實例。 –
它的TemplateException關於模型中缺少的數據。 –
不,沒有全局緩存或類似的'TemplateExceptionHandler'。您是否曾嘗試過在第一種情況下使用IGNORE_HANDLER?因爲如果這種行爲改變了,那麼這就證明了這一點(1)IGNORE_HANDLER正在按預期工作,並且(2)由於某種原因,您正在使用第1個cfg,而您正在使用第2個。 – ddekany