簡體   English   中英

豐富的面孔和數據表

[英]Rich faces and dataTable

我有關於豐盛的面孔和豆類的問題。 我有一個使用Richfaces的jsp頁面,里面有:rich:extendedDatatable組件,該組件將MainBean中的數據作為ArrayList接收(此bean查詢mySQL並將結果放入稍后填充dataTable的ArrayList中)。 數據表中有4列,前3列是h:outputLabels,最后一列是復選框。 現在我有一個問題:如何從選定的行中獲取信息? 我的意思是,當用戶單擊復選框時,我要獲取ID /名稱或與此特定行關聯的任何名稱,然后當用戶單擊“應用更改”時,我將更新數據庫,當用戶再次登錄時,他將查看更新的信息:例如,由於用戶選中了復選框,因此現在選中/未選中復選框。 我相信這是與之合作的人的簡單查詢。 對我來說 Flash開發人員在as3中會很容易,但是在這里我還沒有找到解決方案,請幫忙。

更新

讓我解釋一下並發布代碼。 當用戶登錄時,然后我查詢有2個表的數據庫。 第一個帶有“活動”(act_id,名稱,描述,日期),第二個稱為“公共”(在其中存儲user_id和act_id)。 我的想法是存儲告訴我哪些數據分配給每個活動的數據。 在這種情況下,例如,具有ID 1的用戶正在使用活動1 2和3,而具有ID 2的用戶正在使用活動2和4,那么當從數據庫中查詢返回結果時,我只創建了一個包含適當數據的ArrayList。 因此,當用戶單擊復選框時,進行插入查詢,當用戶取消選擇復選框后,對數據庫進行刪除查詢(基於用戶ID和act_id),這是查詢方法的代碼,首先我必須獲取user_id:

public String login() {
    Statement stmt2 = null;
    Statement stmt3 = null;
    ResultSet rs = null;
    ResultSet rs2 = null;
    ResultSet rs3 = null;
    String sql = "SELECT * from user";
    String sql2 = "SELECT * from activities";
    try {
      conn = DriverManager.getConnection(jdbcUrl, user, pass);
      stmt = conn.createStatement();
      stmt2 = conn.createStatement();
      boolean selected = true;

      rs = stmt.executeQuery(sql);
      rs2 = stmt2.executeQuery(sql2);
       while(rs.next()) {
        if (username != null && password != null) {
          if (rs.getString("username").equals(username)
              && rs.getString("password").equals(password)) {
            id = rs.getString("user_id");
            stmt3 = conn.createStatement();
            while(rs2.next()){
              selected = false;
              String aid = rs2.getString("act_id");
              String name = rs2.getString("name");
              String desc = rs2.getString("desc");
              String date = rs2.getString("date");
              String sql3 = "SELECT * from common where uid="+id+"";
              rs3 = stmt3.executeQuery(sql3);
              while(rs3.next()) {
                 if(rs3.getString("aid").equals(aid)){
                   activities.add(new Activity(name, desc, date, true));
                   selected = true;
                 }

              }
              if(!selected)
                activities.add(new Activity(name, desc, date, false));
            }
            return "success";
          }
        }
    } 
    }catch (SQLException sqle) {
      sqle.printStackTrace();
    } finally {
      try {
        rs.close();
        stmt.close();
        conn.close();
      } catch (SQLException e) {
      }
    }
    return "failure";
  }

和豐富的面孔視圖:

<a4j:form>
<rich:extendedDataTable id="activities" value="#{mainBean.activities}" var="acts" sortMode="single">
        <rich:column label="Name" sortable="true" sortBy="#{acts.name}">
        <f:facet name="header"> 
                 <h:outputText value="Name" />
          </f:facet>
        <h:outputLabel value="#{acts.name}" />
        </rich:column>
        <rich:column label="Description" sortable="true" sortBy="#{acts.description}">
        <f:facet name="header"> 
                 <h:outputText value="Description" />
          </f:facet>
        <h:outputLabel value="#{acts.description}" />
        </rich:column>
        <rich:column label="Date" sortable="true" sortBy="#{acts.date}">
        <f:facet name="header"> 
                 <h:outputText value="Date" />
          </f:facet>
        <h:outputLabel value="#{acts.date}" />
        </rich:column>  
        <rich:column label="Selected" sortable="true" sortBy="#{acts.selected}">
        <f:facet name="header"> 
                 <h:outputText value="Selected" />
          </f:facet>
        <h:selectBooleanCheckbox value="#{acts.selected}" />
        </rich:column>
        </rich:extendedDataTable>
        <h:commandButton value="Apply changes" action="#{mainBean.addActivity}" />
        </a4j:form>

JSF已經更新了arraylist中的bean。 只需以常規方法在action方法中堅持下去即可:

public void save() {
    mainBeanDAO.save(mainBeans);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM