首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

JSF 2 打造可重用 Ajax 組件實戰(完):自動完成組件運行驗證與總結

     編輯:J2EE

前言:從代碼到運行 — 完成自動完成組件的最後一公里

前九篇已完成自動完成組件的核心邏輯:Facelet 復合組件、JavaScript 事件處理、Java 端監聽器、托管 Bean、數據模型。本文演示如何在 Eclipse + GlassFish 環境中導入、部署、運行該組件,並總結 JSF 2 復合組件 + Ajax 的核心優勢與擴展方向。

1. 環境準備

  • Eclipse IDE for Java EE Developers (3.6 Helios 或更新)
  • GlassFish Server Tools 插件:Help → Eclipse Marketplace → 搜索 "GlassFish" 安裝
  • GlassFish 3.1+ (支援 JSF 2.0/2.1)
  • 本文配套源碼目錄結構:
    autoComplete/ (Web 專案根目錄)
      src/java/ (Java 源碼)
      web/ (Facelet、JS、CSS)
      web/resources/util/autoComplete.xhtml (復合組件定義)

2. 導入專案到 Eclipse

  1. File → New → Dynamic Web Project
  2. Project name: `autoComplete`
  3. Target Runtime: GlassFish 3.x (Java EE 6)
  4. Dynamic Web Module version: 3.0 (或 2.5)
  5. Configuration: Default Configuration for GlassFish
  6. EAR Membership: 不勾選
  7. Next → Context root: `autoComplete`、Content directory: `web`、Java source: `src/java`、取消 Generate web.xml
  8. Finish

專案配置步驟1

專案配置步驟2

專案結構

3. 關聯 GlassFish Runtime

  1. 右鍵專案 → Run As → Run on Server
  2. 選擇 "GlassFish 3.x Java EE 6"
  3. Finish

Run on Server

選擇 GlassFish

4. 運行效果驗證

Eclipse 啟動 GlassFish,部署應用,瀏覽器打開:
`https://localhost:8080/autoComplete/faces/index.xhtml`

運行效果

操作演示

  1. 在「Locations」輸入框輸入 `Al` → 下拉列表即時顯示以 `Al` 開頭的虛構國家名 (Albania、Algeria 等)。
  2. 繼續輸入 `Bar` → 列表縮小為 `Bar` 開頭項目。
  3. 點擊列表項或鍵盤選中 → 輸入框填入完整名稱、列表隱藏。
  4. 輸入框失焦 200ms 後列表自動隱藏 (防誤觸)。

5. 核心技術回顧:JSF 2 復合組件 + Ajax 的優勢

傳統做法 (JSF 1.x / 手工)JSF 2 復合組件 + Ajax
需編寫 `UIComponent`、`Renderer`、`.taglib.xml`、`.tld`、JS 文件、註冊 `faces-config.xml`單一 `.xhtml` (Facelet) 定義組件結構、行為、Ajax、JS — **零 Java 基礎設施代碼**
Ajax 需手工整合第三方 JS 庫 (Dojo、jQuery、RichFaces)內建 `jsf.ajax.request()`、`` 標準化,**無第三方依賴**
組件狀態管理複雜,易衝突命名空間隔離 (`cc.attrs`、`cc.clientId`),**多實例共存無衝突**
JS 與 Java 端耦合緊密JS 僅負責觸發 Ajax 傳參,邏輯在 Java 端監聽器,**關注點分離**

6. 擴展方向:打造生產級自動完成組件

  1. 最小輸入長度觸發:`` JS 端判斷。
  2. 防抖/節流優化:`setTimeout` + `clearTimeout` (已實現 350ms) → 可配置化。
  3. 鍵盤導航:↑/↓ 選擇、Enter 確認、Esc 關閉 (增強 `onkeydown`)。
  4. 異步數據源:支援 `List`、`List`、JPA 實體、REST 端點 (屬性 `valueExpression`)。
  5. 模板自定義:`` + `` 插槽,允許調用方自定義下拉項渲染。
  6. 無障礙 (ARIA):`role="combobox"`、`aria-expanded`、`aria-activedescendant`。
  7. 主題樣式化:CSS 變量 / PrimeFaces ThemeRoller 兼容。
  8. 整合 ``:允許外部 Ajax 行為觸發組件更新 (下篇專題)。

7. 總結

JSF 2 的**復合組件**機制將「組件開發」從繁重的 Java 基礎設施代碼中解放出來,讓開發者專注於**面向聲明的組件定義**:Facelet 標記定義結構,內建 Ajax 引擎處理通信,Java 監聽器封裝業務邏輯,JavaScript 僅作為薄觸發層。自動完成組件僅用 ~200 行代碼 (含 JS/Java/Facelet) 即實現了生產可用的交互體驗,展示了 JSF 2 在**組件化、Ajax 化、可重用**三大維度的工程效能飛躍。

系列延伸閱讀:

【責任編輯:立方】

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved