2013-02-19 22 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/"); 
     ... 
    } 

    ... 
}