大多數 Java 開發者看好 Mashup,但 Seam 與 Ajax 如何整合?本文展示如何用 Seam Remoting API 與 Ajax JSF 組件實現 JSF 應用中的 Ajax 風格交互:享受 Web 2.0 奢華體驗,無需陷入 JavaScript XMLHttpRequest 痛苦。瀏覽器與服務端狀態自動同步,低層通訊協議完全隱藏。
結果:令高爾夫球員印象深刻的 Web 2.0 風格應用。
正如避免顯式記憶體管理,不應處理低層 Ajax 協議(多瀏覽器兼容、數據封送、並發衝突、伺服器負載、自定義 Servlet/Filter)。最大陷阱:無意暴露無狀態請求-回應範式,這正是 JSF 等組件框架要隱藏的。JSF 生命週期屏蔽 Servlet 模型,推進組件導向設計。將管道工作交給 Seam Remoting 或 Ajax JSF,事件觸發時異步發送訊息,增量更新頁面,低層協議隱藏於 API 之後。
| 特性 | Seam Remoting | Ajax JSF |
|---|---|---|
| 核心機制 | JavaScript API 訪問服務端組件如本地物件 | 完全隱藏 JavaScript,邏輯封裝在 UI 組件內 |
| 生命週期 | 自定義非 JSF 生命週期,僅恢復 Seam 容器/組件 | 完整 JSF 生命週期處理 Ajax 請求 |
| 組件樹更新 | 手動控制 | 自動升級組件樹、重渲染頁面片段 |
| 抽象層級 | 透明協議,無需關心數據包傳輸 | 面向組件,Ajax 成 JSF 自然一部分 |
兩者非互斥,均基於 JSF 組件模型,易於結合。本文將深入探討兩種方式,先夯實 Ajax 基礎。