0

FreemarkerConfigurerでFreemarkerWebappTemplateLoaderを使用する方法の例はありますか?

私はSpringMVCで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 / default / ftlをテンプレートの読み込みパスに追加したいのですが、動的/構成可能である可能性があるため、xmlファイルにハードコーディングできません。

任意の提案をいただければ幸いです。

ありがとうカルメン

4

1 に答える 1

0

DesktopFreeMarkerConfigurer をSpring Beanとして定義していると思います。その場合、サーブレット コンテキストを取得するのは簡単なはずです。これを 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/");
        ...
    }

    ...
}
于 2013-03-13T16:39:37.323 に答える