我想使用Facelets生成HTML內容。我想重複使用Velocity不支持的現有taglibs。如何在獨立應用程序中將Java Facelets用作通用模板引擎?
我已閱讀開發人員指南,但沒有得到任何線索。
Facelets是否需要Java編譯器才能工作? (我猜不是)我也嘗試過使用Jetty ServletTester,但它似乎不起作用。
那麼有可能嗎?
我想使用Facelets生成HTML內容。我想重複使用Velocity不支持的現有taglibs。如何在獨立應用程序中將Java Facelets用作通用模板引擎?
我已閱讀開發人員指南,但沒有得到任何線索。
Facelets是否需要Java編譯器才能工作? (我猜不是)我也嘗試過使用Jetty ServletTester,但它似乎不起作用。
那麼有可能嗎?
是的,這是可能的。
沒有必要讓Java編譯器呈現視圖。 Facelets完全由taglib驅動,只有EL(表達式語言)可能出現在模板腳本中,所以不需要靜態編譯。
要將Facelets嵌入到獨立應用程序中,您可以編程初始化一個servlet上下文。在這種情況下,我使用Jetty。請參閱ServletTester
類的實現,並編寫您自己的服務器。
值得一提的是jsf-ri
工作不正常,但是,幸運的是我們有另一種選擇,我們可以使用myfaces-impl
哪個更好。
主要問題仍然是關於ResourceResolver
。如果您需要設置一個複雜的資源結構,即模板文件(XHTML)被放置在不同的位置,那麼你需要:
創建自己的ResourceResolver
代表DefaultResourceResolver
。
覆蓋org.mortbay.jetty.servlet.Context.getResource()
使其返回與ResourceResolver
一致的資源。或者如果嵌入式servlet上下文不是基於Jetty的類似的話。
Jetty ServletTester對'jsf-ri'無法正常工作,請使用'myfaces-impl'代替。 – 2011-03-20 15:27:11