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

JSF 透過 URL 傳遞參數實現 CRUD:解決 DataTable 分頁與瀏覽器收藏難題

     編輯:J2EE

JSF 預設 POST 機制的痛點

  • 表單一律 POST,無法直接用 URL 參數跳轉特定頁面/記錄
  • DataTable 分頁預設載入全量資料再切頁,大數據量效能差
  • 無法收藏特定記錄頁面、重新整理會提示重送、後退按鈕失效

解決方案:URL 參數 + Backing Bean 讀取

1. 查詢/分頁:GET 請求參數

// Backing Bean 建構子或 @PostConstruct
String page = (String) FacesContext.getCurrentInstance()
    .getExternalContext().getRequestParameterMap().get("page");
String sort = ...;
List<Data> list = dao.findPage(page, sort, pageSize);

頁面連結:<h:outputLink value="list.jsf?page=3&sort=name">第 3 頁</h:outputLink>

2. 修改:URL 傳遞 ID

<h:column>
  <h:outputLink value="edit.jsf?id=#{row.id}">修改</h:outputLink>
</h:column>
// EditBean 建構子
public EditBean() {
    String id = FacesContext.getCurrentInstance()
        .getExternalContext().getRequestParameterMap().get("id");
    this.entity = dao.findById(id);
}

優點:支援重新整理、後退、收藏、書籤。

3. 新增/刪除

  • 新增:同修改頁面,無 ID 參數即為新增模式
  • 刪除:DataTable 每列 commandButton action="#{bean.delete(row.id)}"

三大核心構件

無論何種功能,JSF 開發離不開:

  1. 頁面:表現層,EL 綁定組件與 Bean
  2. faces-config.xml:導航規則、受管 Bean 範圍
  3. Backing Bean:邏輯層,業務處理與資料存取

調試提醒

  • 修改 JSP:需新 Session(關閉瀏覽器)生效
  • 修改配置/Bean:必須重啟伺服器
  • 建議整合熱部署工具(JRebel)提升開發效率
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved