找不到Freemarker模板

时间:2009-11-25 20:04:14

标签: java spring freemarker

我目前正试图让Freemarker使用Spring处理我的应用程序。无论我尝试什么,我都会不断找到模板。我不确定我是否正确配置了配置,但它从未找到我的模板。这是我的spring bean配置:

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath" value="/WEB-INF/freemarker/"/>
</bean>

每当我尝试在freemaker配置上调用getTemplate时,它总是发回模板未找到错误。所以如果我这样做

configuration.getTemplate("testTemplate.ftl") 

它总是抛出IOException。

我不确定是否有人知道我做错了什么。

感谢您的帮助!

4 个答案:

答案 0 :(得分:0)

首先,/WEB-INF/freemarker只能作为WebApplicationContext内的路径。否则Spring会尝试将其解析为文件系统路径而不是servlet上下文路径。您在DispatcherServlet

加载的上下文中上面发布的摘录

其次,您是否有任何理由直接使用configuration而不是使用Spring的ViewResolver

最后,IOException可能意味着许多不同的事情。你可以发布完整的堆栈跟踪吗?

答案 1 :(得分:0)

我认为您必须确保文件“testTemplate.ftl”位于文件夹“/ WEB-INF / freemarker /”

答案 2 :(得分:0)

您也可以将其设置为

    @Bean
    public FreeMarkerConfigurationFactoryBean freemarkerConfiguration() {
        FreeMarkerConfigurationFactoryBean bean = new FreeMarkerConfigurationFactoryBean();
        bean.setTemplateLoaderPath("classpath:/templates/");
        return bean;
    }

您的情况:

    <property name="templateLoaderPath" value="classpath:/WEB-INF/freemarker/"/>

答案 3 :(得分:-1)

我遇到了同样的问题,最后我决定使用以下方法:

Configuration configuration = new Configuration();
FileTemplateLoader templateLoader = new FileTemplateLoader(new File(YOUR_BASE_TEMPLATE_DIR));
configuration.setTemplateLoader(templateLoader);
freemarker.template.Template template = configuration.getTemplate(YOUR_TEMPLATE_NAME);
template.process(datamodel, writer);