2013-02-19 5 views
0

누구나 FreemarkerConfigurer에서 Freemarker WebappTemplateLoader를 사용하는 방법에 대한 예제가 있습니까?Freemarker WebappTemplateLoader in FreemarkerConfigurer

저는 Freemarker를 Spring MVC와 함께 사용하고 있으며 FreeMarkerConfigurer를 확장하여 다양한 템플릿 로더를 추가하고 있으며 웹 응용 프로그램 컨텍스트의 템플릿을로드하기 위해 웹 응용 프로그램 로더를 추가하고 싶습니다. 하지만 그 생성자에 대한 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/"); 
    [...] 
    } 
} 

나는 템플릿로드 경로로 웹 애플리케이션/기본/FTL을 추가하고 싶습니다하지만 구성/동적 일 수 있으므로, 나는 XML 파일을 하드 코딩 할 수 없다.

의견을 보내 주시면 대단히 감사하겠습니다.

난 당신이 스프링 빈으로 DesktopFreeMarkerConfigurer을 정의하는 가정 당신에게 카르멘

답변

0

감사드립니다. 그런 경우 서블릿 컨텍스트를 가져 오는 것이 간단해야합니다.

@Autowired private ServletContext context; 

을 또는 당신이 선택하면, 당신은 또한 ServletContextAware 구현 할 수 있습니다 : 그냥 DesktopFreeMarkerConfigurer 클래스에서이 정의

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

    ... 
}