將 JSF 與 JSP 結合如「把腳硬塞進手套」——勉強可行,但只是權宜之計。Facelets 專為 JSF 組件模型量身打造的模板語言,徹底解決 JSP 動態內容生成與 JSF 組件樹構建的生命週期獨立衝突。
前兩者最關鍵,本文聚焦模板化與復合組件。
doGet/doPost(實為 _jspService),JSF 標籤調用組件渲染狀態,組件生命週期獨立於 JSP Servlet 生命週期——混淆根源。Facelets 減少寫自定義標籤需求,本身即可用 JSF 組件。溝通雙方只需在 Facelet 標籤庫文件聲明 JSF 組件,模板語言中直接使用,無額外開發。
示例應用:線上 CD 店庫存 CRUD,含新增 CD 表單(單選按鈕選分類觸發 JS 提交)、CD 列表(按標題/藝術家排序)。原用 Tiles,現重構為 Facelets 視圖,先替換 Tiles 支援,再編寫復合組件。