本文演示如何在 Eclipse 中創建 Dynamic Web Project,配置目標運行時、模塊版本、內容目錄、源碼目錄,並展示最終專案結構,為後續部署運行奠基。


autoComplete
├─ Deployment Descriptor: autoComplete
├─ Java Resources
│ └─ src/java
│ └─ com.corejsf
│ ├─ AutocompleteListener.java
│ ├─ AutoComplete.java
│ └─ User.java
├─ JavaScript Resources
├─ build
├─ WebContent (或 web)
│ ├─ META-INF
│ ├─ resources
│ │ └─ util
│ │ └─ autoComplete.xhtml <-- 復合組件定義
│ ├─ WEB-INF
│ │ ├─ faces-config.xml (可選)
│ │ └─ lib (第三方 JAR)
│ ├─ index.xhtml <-- 演示頁面
│ └─ template.xhtml (可選)
└─ .settings / .project / .classpath

| 目錄/文件 | 用途 | 備註 |
|---|---|---|
| `web/resources/util/autoComplete.xhtml` | 復合組件定義 (cc:interface + cc:implementation) | 命名空間 `xmlns:cc="https://java.sun.com/jsf/composite"`,資源庫 `util` 對應標籤前綴 ` |
| `src/java/com/corejsf/AutocompleteListener.java` | Ajax 監聽器 (SessionScoped CDI Bean) | 處理 `valueChangeEvent` (輸入框) 和 `completionItemSelected` (列表選擇) |
| `src/java/com/corejsf/AutoComplete.java` | 應用級 Bean (ApplicationScoped),提供完成項數據 `getCountries()` | 模擬數據源,實際可注入 Service/JPA Repository |
| `src/java/com/corejsf/User.java` | 會話級 Bean (SessionScoped),綁定輸入框值 `country` | 模擬表單數據模型 |
| `web/index.xhtml` | 演示頁面,引用 ` | 展示組件使用方式 |
| `web/resources/` 下的 JS/CSS | JSF 2 標準資源庫機制 | ` |
標準化的 Eclipse Dynamic Web Project 結構配合 Servlet 3.0 / JSF 2.0 / CDI 的零配置特性,讓開發者專注於組件邏輯而非基礎設施 XML。下篇將演示如何關聯 GlassFish Server Runtime 並一鍵運行驗證。