作者親歷:從零 Java/Web 經驗、寫了半吊子 JSP 後「判決 JSP 死刑」,毅然鑽研 JSF。一個月內,兩人完成 126 張表、346 頁 JSP、458K Java 代碼的中型系統,還含完整需求與資料庫設計文檔。效率飛躍,全歸功於 JSF 極大簡化 Web 開發。
無需宣告 JavaBean、無內嵌 Scriptlet、無多餘符號,僅剩優雅的擴展標籤。程式碼整潔度讓潔癖開發者賞心悅目——正如有人冬天穿同一件磨損夾克,但代碼卻整潔得令人嫉妒。
典型 JSF 應用中,開發者基本無需直接操作 Request/Response。從 Request 解碼參數、到 Response 編碼輸出,JSF 全自動處理。隱含對象仍提供訪問入口,但極少用到。
JSF UI 組件運行於服務端,但在框架支撐下,開發者體驗與桌面 GUI 組件無異。拖放組件到頁面,IDE 生成標籤文本;將組件 value 與後台 Bean 屬性綁定,即獲得完整行為:頁面顯示與後台數據同步、用戶輸入轉換、數據驗證、錯誤提示、組件狀態保存/恢復——零代碼實現。
作者深受 PowerBuilder DataWindow 吸引(以資料庫為中心設計習慣,126 張表即證)。JSF 數據組件(UIData + UIColumn)殊途同歸:將數據表視為列組成、行數由資料源決定。資料源非直接來自資料庫,而是經由 JavaBean 以 ResultSet 形式傳遞——在 JSP 中折騰許久,在 JSF 中如生成輸入框般簡單。
List 介面的物件皆可作資料源,極大便利。UIColumn.value 與資料源屬性,用戶修改自動持久化——JSP 中需深吸一口氣才敢動手的功能。