2011-03-18 26 views
4

我想使用Facelets生成HTML內容。我想重複使用Velocity不支持的現有taglibs。如何在獨立應用程序中將Java Facelets用作通用模板引擎?

我已閱讀開發人員指南,但沒有得到任何線索。

Facelets是否需要Java編譯器才能工作? (我猜不是)我也嘗試過使用Jetty ServletTester,但它似乎不起作用。

那麼有可能嗎?

+0

Jetty ServletTester對'jsf-ri'無法正常工作,請使用'myfaces-impl'代替。 – 2011-03-20 15:27:11

回答

1

是的,這是可能的。

沒有必要讓Java編譯器呈現視圖。 Facelets完全由taglib驅動,只有EL(表達式語言)可能出現在模板腳本中,所以不需要靜態編譯。

要將Facelets嵌入到獨立應用程序中,您可以編程初始化一個servlet上下文。在這種情況下,我使用Jetty。請參閱ServletTester類的實現,並編寫您自己的服務器。

值得一提的是jsf-ri工作不正常,但是,幸運的是我們有另一種選擇,我們可以使用myfaces-impl哪個更好。

主要問題仍然是關於ResourceResolver。如果您需要設置一個複雜的資源結構,即模板文件(XHTML)被放置在不同的位置,那麼你需要:

  1. 創建自己的ResourceResolver代表DefaultResourceResolver

  2. 覆蓋org.mortbay.jetty.servlet.Context.getResource()使其返回與ResourceResolver一致的資源。或者如果嵌入式servlet上下文不是基於Jetty的類似的話。

相關問題