2009-11-25 129 views
4

我目前正试图让Freemarker与我的应用程序一起使用Spring。无论我尝试什么,我都一直在找不到模板。我不确定是否正确设置了配置,但它从来没有找到我的模板。这是我的Spring bean的配置:找不到Freemarker模板

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

每当我打电话是getTemplate在freemaker的配置它总是发回错误未找到模板。所以如果我做

configuration.getTemplate("testTemplate.ftl") 

它总是抛出一个IOException。

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

感谢您的帮助!

+0

你如何设置'配置'对象? – tinkertime 2009-11-25 20:09:50

+0

我从Spring获取配置对象。有一个来自FreeMarkerConfigurer的getConfiguration方法 – brock 2009-11-26 01:03:35

回答

0

首先,/WEB-INF/freemarker只能用作WebApplicationContext以内的路径;否则Spring将尝试将其解析为文件系统路径而不是servlet上下文路径。您是否从DispatcherServlet加载的上下文中发布的摘录?

其次,有没有什么原因可以直接使用configuration而不是使用Spring的ViewResolver

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

+0

感谢您的回应!我认为有某种路径问题....所以我试图使用freemarker来帮助通过使用模板发送电子邮件。我原本以为ViewResolver有点多。所以我认为最好是使用配置来代替......不知道这是否是正确的做法。至于IOException,返回的消息是找不到模板。 – brock 2009-11-26 01:02:40

+0

哦,我正在配置applicationContext.xml文件中的bean。我没有把它放在DispatchServlet中。 – brock 2009-11-26 01:06:57

+0

上下文是如何为该“applicationContext.xml”创建的(Spring类用于创建它)?如果它没有从WebApplicationContext下载**,它将**不能从“/ WEB-INF”中获得任何东西 - 除非你指定了绝对的文件系统url。 – ChssPly76 2009-11-26 02:30:59

-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); 
+0

我试过了,但没有为我工作。我在一个存在的路径上收到了异常java.io.FileNotFoundException异常。这真的很疯狂! – 2012-07-24 23:51:08

0

我想你必须确保文件“testTemplate.ftl”是在文件夹“/ WEB-INF/freemarker /”