我有一個web應用程序,我需要手動獲取Freemarker模板 - 該模板是通過庫項目中的類獲取的,但實際的tpl文件包含在Web應用程序類路徑中。所以,有兩個項目,一個是'taac-backend-api',另一個是'taac-web'。 taac-backend-api具有獲取模板並處理它的代碼,但taac-web是模板存儲的地方(具體位於:WEB-INF/classes/email/vendor.tpl) - 我嘗試了使用將類路徑資源彈出以使用Freemarkers setClassForTemplateLoading方法。我認爲這將工作:從類路徑設置freemarker模板
freemarkerConfiguration = new Configuration();
freemarkerConfiguration.setClassForTemplateLoading(this.getClass(), "");
Template freemarkerTemplate = freemarkerConfiguration.getTemplate("/email/vendor.tpl");
但是,我總是得到一個FileNotFoundException。有人可以解釋從類路徑獲取模板的最佳方式嗎?
謝謝。
根據類加載器層次結構,有時必須仔細考慮您爲「ClassTemplateLoader」指定的類。通常最好的方法是使用'ClassTemplateLoader'構造函數,該構造函數直接使用'ClassLoader'(而不是'Class' - 自2.3.22開始),然後傳入Web應用程序的線程上下文類加載器。 – ddekany 2015-03-14 09:49:53