2009-11-25 114 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 /」