任何人都有关于如何在FreemarkerConfigurer中使用Freemarker WebappTemplateLoader的示例?
我正在使用Freemarker和Spring MVC并扩展FreeMarkerConfigurer以添加各种模板加载器,我还想添加一个Web应用程序加载器来加载Web应用程序上下文中的模板。但我不知道如何为其构造函数获取servletcontext参数。
public class DesktopFreeMarkerConfigurer extends FreeMarkerConfigurer{
@Override
protected void postProcessConfiguration(Configuration config){
[...]
/* Get templates from the webapp/servlet context */
WebappTemplateLoader watl = new WebappTemplateLoader(<servletContext>, "default/ftl/");
[...]
}
}
我想将webapp / default / ftl添加到模板加载路径,但由于它可能是动态/可配置的,我无法在xml文件中对其进行硬编码。
任何建议都将不胜感激。
谢谢 卡门
答案 0 :(得分:0)
我假设您将DesktopFreeMarkerConfigurer定义为spring bean。 在这种情况下,获取servlet上下文应该很简单。 只需在DesktopFreeMarkerConfigurer类中定义:
@Autowired private ServletContext context;
或者如果你选择,你也可以让它实现ServletContextAware:
public class DesktopFreeMarkerConfigurer extends FreeMarkerConfigurer implements ServletContextAware {
private ServletContext servletContext;
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
}
@Override
protected void postProcessConfiguration(Configuration config){
WebappTemplateLoader watl = new WebappTemplateLoader(this.servletContext, "default/ftl/");
...
}
...
}