2013-02-19 90 views
0

任何人都有一个关于如何在FreemarkerConfigurer中使用Freemarker WebappTemplateLoader的例子吗?Freemarker WebappTemplateLoader在FreemarkerConfigurer

我在Spring MVC中使用Freemarker并扩展了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 /默认/ FTL添加到模板加载路径,但是因为它可能是动态的/可配置的,我不能在XML文件中硬编码。

任何建议将不胜感激。

谢谢 卡门

回答

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/"); 
     ... 
    } 

    ... 
}