在使用TemplateEngine模版引擎时发现报错:Template engine has already been initialized (probably because it has already been executed or a fully-built Configuration object has been requested from it. At this state, no modifications on its configuration are allowed.
最后发现是反复使用模板并且进行了初始化才报这个错误
ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setPrefix("templates/");
templateResolver.setSuffix(".html");
templateEngine.setTemplateResolver(templateResolver);
进入方法setTemplateResolver发现每次调这个方法时都会进行初始化,所以才报错
public void setTemplateResolver(ITemplateResolver templateResolver) {
Validate.notNull(templateResolver, "Template Resolver cannot be null");
this.checkNotInitialized();
this.templateResolvers.clear();
this.templateResolvers.add(templateResolver);
}
于是在调方法setTemplateResolver前对模板做了是否已初始化校验如下
ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setPrefix("templates/");
templateResolver.setSuffix(".html");
if (!templateEngine.isInitialized()) {
templateEngine.setTemplateResolver(templateResolver);
}