FreeMarkerRender 是否可以设置模板文件多个路径

现在只有这个方法支持单个路径:

cfg.setServletContextForTemplateLoading(JFinal.me().getServletContext(), StringUtils.trim(PropKit.get("template.loader_path")));


评论区

JFinal

2019-07-17 10:51

freemarker 貌似没有这个功能

sdhery

2019-07-17 10:53

@JFinal spring可以

JFinal

2019-07-17 10:56

@sdhery 将 spring 的代码拿过来用一用,配置点:
Configuration config = FreeMarkerRender.getConfiguration();

通过上面代码拿到 freemarker 的 config 对象以后,再进行各种配置即可

sdhery

2019-07-17 14:08

final Class webappTemplateLoaderClass = ClassUtil.forName("freemarker.cache.WebappTemplateLoader");

// Don't introduce linking-time dependency on servlets
final Class servletContextClass = ClassUtil.forName("javax.servlet.ServletContext");
final Class[] constructorParamTypes = new Class[] { servletContextClass, String.class };
final Object[] constructorParams = new Object[] { JFinal.me().getServletContext(), StringUtils.trim(PropKit.get("template.loader_path"))};
TemplateLoader templateLoader1 = (TemplateLoader)webappTemplateLoaderClass.getConstructor(constructorParamTypes).newInstance(constructorParams);
final Object[] constructorParams1 = new Object[] { JFinal.me().getServletContext(), "/templates"};
TemplateLoader templateLoader2 = (TemplateLoader)webappTemplateLoaderClass.getConstructor(constructorParamTypes).newInstance(constructorParams1);
MultiTemplateLoader mtl = new MultiTemplateLoader(new TemplateLoader[] {templateLoader1,templateLoader2 });
cfg.setTemplateLoader(mtl);

这样就可以了。

JFinal

2019-07-17 15:37

@sdhery 赞, 谢谢分享

热门反馈

扫码入社