Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc Freemarker配置程序中的Freemarker WebappTemplateLoader_Spring Mvc_Freemarker - Fatal编程技术网

Spring mvc Freemarker配置程序中的Freemarker WebappTemplateLoader

Spring mvc Freemarker配置程序中的Freemarker WebappTemplateLoader,spring-mvc,freemarker,Spring Mvc,Freemarker,有人举过如何在Freemarker配置器中使用Freemarker WebappTemplateLoader的例子吗 我正在将Freemarker与Spring MVC结合使用,并扩展Freemarker配置器以添加各种模板加载器,我还想添加一个web应用加载器以在web应用上下文中加载模板。但我不知道如何为其构造函数获取servletcontext参数 public class DesktopFreeMarkerConfigurer extends FreeMarkerConfigurer{

有人举过如何在Freemarker配置器中使用Freemarker WebappTemplateLoader的例子吗

我正在将Freemarker与Spring MVC结合使用,并扩展Freemarker配置器以添加各种模板加载器,我还想添加一个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/");
    [...]
    }
}
公共类DesktopFreeMarkerconfiguer扩展了FreeMarkerconfiguer{
@凌驾
受保护的void后处理配置(配置){
[...]
/*从webapp/servlet上下文获取模板*/
WebappTemplateLoader watl=新的WebappTemplateLoader(,“default/ftl/”);
[...]
}
}
我想将webapp/default/ftl添加到模板加载路径,但由于它可能是动态的/可配置的,我无法在xml文件中硬编码它

如有任何建议,将不胜感激

多谢各位
Carmen

我假设您将DesktopFreeMarkerConfigure定义为Springbean。 在这种情况下,获取servlet上下文应该很简单。 只需在DeskTopFreeMarkerConfigure类中定义:

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

    ...
}