2012-05-29 79 views
0

我正在嘗試使用簡單的< #include「anotherFile.ftl」/>在正在使用Javascript API的方法proccessTemplate(http://wiki.alfresco.com/wiki/4.0_JavaScript_API#Transformation_API)針對特定節點處理的freemarker模板中。node.processTemplate ftl可以使用include命令嗎?

它似乎不喜歡包括?!

錯誤消息是如下

包裝的異常(具有狀態模板):04305890未能執行 腳本 「類路徑*:露天/擴展/模板/ webscripts/mypath中/ myWebscript.get.js ': 04305889處理模板時出錯'包含文件字符串://fooy/foo.ftl'的錯誤讀取 '。請聯繫您的系統管理員 。

正在處理的模板和將被包含的潛在模板將被存儲在Alfresco倉庫之外,但現在它已經存在了。 Web腳本也將在存儲庫之外並位於Java類路徑中。

我試圖包括ftl,即使它在同一個目錄內,並且這不起作用。我試圖得到一個node.nodeRef(成功),但實際的包括不起作用,雖然這意味着將ftl存儲在我們不會做任何事情的存儲庫中。

我曾嘗試包括實際webscripts的FTL freemarker的本身,而是課程之前它被傳遞到webscript Freemarker模板的node.processTemplate發生在JavaScript控制器的

我甚至嘗試硬編碼的內容包含並將其傳遞到args關聯數組中,並如預期的那樣無效。

進一步的調查表明,這是一個錯誤 https://issues.alfresco.com/jira/browse/ALFCOM-3364

任何其他的建議表示歡迎,如果有人已經克服這一點。

感謝

+0

有什麼錯誤信息的路徑?無論如何,我不知道Alfresco,只有FreeMarker。 FreeMarker有一個名爲'templateLoader'的配置設置,它是一個實現'freemarker.cache.TemplateLoader'並解析絕對路徑的對象(比如,如果你在'/ foo/bar.ftl'中,那麼它會得到'/ foo/anotherFile.ftl')。所以問題是如果Alfresco使用什麼實現。研究一下你可能會明白什麼是可用的,以及什麼路徑。 – ddekany

+0

你的場景是什麼,當這個模板被處理時,我仍然感到困惑。這是在一封電子郵件嗎? Explorer模板? –

+0

@ddekany - 我已經添加了一個錯誤的實例,我被指出這是一個已知的問題。 – Chris

回答

1

如果它是一個webscript,那麼我想你的路徑是不正確的。

例如:我有一個webscript foo。它將出現在alfresco/extension/templates/webscripts/org/test/ 因此,我將有foo.get.desc.xml,foo.get.js和foo.get.html.ftl。

我在露天/推廣/模板/ webscripts /組織/普通/ common.ftl

共同Freemarker模板然後我需要把<#include "/org/common/common.ftl" />在foo.get.html.ftl freemarker的。

所以你需要設置從alfresco/extension/templates/webscripts

+0

感謝您的回答,包括主要webscript完美罰款,雖然這不是我們要包括的地方。在foo.get.js中的某處,我們抓取一個節點,並使用node.processTemplate和另一個freemarker作爲foo.get.js中拾取的參數。問題是這個二級Freemarker似乎不允許包括。在我原來的帖子中,我發佈了一個指向Aflresco的Jira的鏈接,指出它是一個已知的bug – Chris

+0

現在,它變得很明顯對不起。我也有同樣的問題,但放棄了,因爲你需要重寫ScriptNode java類 –

相關問題