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

NetBeans Visual Web JSF 開發:數據綁定組件訪問數據庫完整教程

     編輯:Java 相關知識

NetBeans Visual Web JSF 框架提供拖拽式組件綁定數據庫能力,無需手寫 JDBC 代碼即可構建主從頁面。本教程基於 GlassFish V2 與 Travel 示例數據庫,完整演示:下拉列表綁定 PERSON 表、表格綁定 TRIP 表、SQL 查詢修改關聯 TRIPTYPE、主從同步邏輯實現、分頁排序配置,掌握可視化數據庫開發全流程。

一、環境與項目創建

  • NetBeans IDE 6.0 + Web/Java EE 支持 + GlassFish V2。
  • 新建 Web Application,名稱 DataboundComponents,框架選 Visual Web JavaServer Faces。
  • 啟用 Travel 示例數據庫(Services 窗口 → Databases → jdbc:derby://localhost:1527/travel → Connect,用戶/密碼 travel/travel)。

二、下拉列表綁定 PERSON 表

  1. 拖入 Label(文本 Select Name:)和 Drop Down List(ID personIdDD),Ctrl+Shift 關聯 Label 的 for 屬性。
  2. 拖入 Message Group 組件用於錯誤顯示。
  3. Services 窗口展開 Travel → Tables → PERSON,拖拽到 Drop Down List 組件上。
  4. 右鍵組件 → Bind to Data,配置:
    Value Field:PERSON.PERSONID(提交值)
    Display Field:PERSON.NAME(顯示文本)
  5. IDE 自動生成 personDataProvider、personRowSet (SessionBean1)。

三、表格綁定 TRIP 表並修改 SQL 關聯 TRIPTYPE

  1. 拖入 Table 組件到下拉列表下方。
  2. 拖拽 TRIP 表到表格標題欄,右鍵 → Table Layout,僅保留 DEPDATE、DEPCITY、DESTCITY 三列。
  3. 修改 SQL 關聯 TRIPTYPE 表顯示旅行類型描述:
    Navigator → SessionBean1 → tripRowSet 右鍵 → Edit SQL Statement。
    Query Editor Design View 中拖入 TRIPTYPE 表,自動建立關聯。
    取消勾選 TRIPTYPE.PERSONID,勾選 TRIPTYPE.DESCRIPTION 加入 Select 列表。
    Table Layout 再次添加 DESCRIPTION 列。

四、實現主從同步:下拉列表選擇驅動表格刷新

1. 編輯 tripRowSet 查詢參數

  • Query Editor Design Grid 中 PERSONID 行右鍵 → Add Query Criteria,Comparison 選 =Equals,Parameter 模式。生成 WHERE TRAVEL.TRIP.PERSONID = ?。
  • DEPDATE 行 Sort Type 選 Ascending。

2. 編寫下拉列表值變更事件處理

右鍵 Drop Down List → Bind to Data 旁邊的事件綁定,或雙擊組件生成 personIdDD_processValueChange:

public void personIdDD_processValueChange(ValueChangeEvent event) {
    try {
        getSessionBean1().getTripRowSet().setObject(1, personIdDD.getSelected());
        tripDataProvider.refresh();
    } catch (Exception e) {
        error("Cannot switch to person " + personDataProvider.getValue("PERSON.PERSONID"));
        log("Cannot switch to person ...", e);
    }
}

setObject(1, ...) 綁定第一個參數,refresh() 重新執行查詢。

3. 編寫 prerender 初始化同步

public void prerender() {
    if (personIdDD.getSelected() == null) {
        try {
            personDataProvider.cursorFirst();
            getSessionBean1().getTripRowSet().setObject(1, personDataProvider.getValue("PERSON.PERSONID"));
            tripDataProvider.refresh();
        } catch (Exception e) { ... }
    }
}

首次加載頁面時,默認選中第一條人員記錄並同步表格。

4. 啟用 Auto-Submit on Change

右鍵 Drop Down List → Auto-Submit on Change,頁面將在選擇變化時自動提交觸發事件處理。

五、進階功能:同步顯示職位、分頁排序

1. 同步 personDataProvider 顯示 JOBTITLE

  • 拖入 Static Text 綁定 PERSON.JOBTITLE。
  • 修改 prerender 增加 else 分支:
else {
    try {
        personDataProvider.setCursorRow(
            personDataProvider.findFirst("PERSON.PERSONID", personIdDD.getSelected()));
    } catch (Exception e) { ... }
}

2. 配置表格分頁與排序

  • 右鍵 Table → Table Layout → Options:
    Header Text 自定義列標題。
    Table Title 設置 Trips。
    勾選 Enable Pagination,Page Size 3。
  • 在 personIdDD_processValueChange 中 tripDataProvider.refresh() 後添加:
    tableRowGroup1.setFirst(0); 確保切換人員時顯示第一頁。

六、生命周期與請求流程解析

服務器日誌顯示方法調用順序:

  1. 首次請求:Constructor → prerender(構建響應,實例銷毀)。
  2. 用戶選擇新人員提交:Constructor → personIdDD_processValueChange → prerender(值變更事件觸發刷新,prerender 忽略 if 分支)。

每次請求創建新 Page Bean 實例,狀態通過請求參數自動恢復,不會重複刷新 RowSet**。

七、總結與擴展練習

  • 核心步驟:拖拽綁定 → Bind to Data 配置顯示/值列 → Table Layout 選列 → Query Editor 改 SQL 加關聯/參數 → 事件處理 setObject+refresh → Auto-Submit → prerender 初始化同步。
  • 練習:構建 TRIPTYPE 驅動 TRIP 的主從頁面;嘗試綁定其他組件(如 Checkbox、Radio Button);探索 CachedRowSet 離線操作。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved