2015-03-02 64 views
0

我是JSF和bean的新手,我有一種情況,我需要從數據庫(oracle)獲取一些數據並在控制檯上顯示。我的第一個bean將從JSF中讀取數據並在第二個bean中調用相應的方法,並將包含數據的列表發回給bean。根據數據再次調用第二個bean中的另一個方法來獲取更多數據。最後數據將發佈給用戶。我的第二個bean將負責數據庫連接。這是我的代碼。 第一個bean,在jsf和javabean中維護會話

String ban = null,ban1 = null; 
masterlist = (ArrayList<ThreadDTO>) getMbd().getBanOrCtn(dbean); 
if (masterlist.isEmpty()) { 
    setSuccess(2); 
    return; 
    } else { 
    Iterator<ThreadDTO> itr = masterlist.iterator(); 
     while (itr.hasNext()) { 
     ThreadDTO dto = (ThreadDTO) itr.next(); 
     ban1 = dto.getWireless_ban(); 
     if (ban1 != null) { 
     ban = ban1; 
     break; 
     } 
    } 

    ctnThreadList = (ArrayList<ThreadDTO>) getMbd().getThreads(dbean); 
    dbean.setSearchby("wireless_ban"); 
    dbean.setSearchValue(ban); 
    banThreadList = (ArrayList<ThreadDTO>) getMbd().getThreads(dbean); 
    masterlist.clear(); 
    masterlist = (ArrayList<ThreadDTO>) getMbd().removeDuplicates( ctnThreadList, banThreadList); 
    setResultlist((ArrayList<ThreadDTO>) getMbd().getApis(masterlist)); 

    } 

二Bean是,

public ArrayList<ThreadDTO> getBanOrCtn(SearchDetailsDTO db) throws Exception { 
    ArrayList<ThreadDTO> threadlist1 = new ArrayList<>(); 

    //query here 

    try { 
    connection = getConnections(timeZone);//getting connection 
      stmt = connection.createStatement(); 
      rs = stmt.executeQuery(banQuery); 

     if (!rs.isBeforeFirst()) { 
      System.out.println("empty resultset"); 
      stmt.close(); 
      rs.close(); 
      connection.close(); 

     } else {    
       while (rs.next()) { 
       ThreadDTO thread = new ThreadDTO(); 

       //code to set the values 

       break; 
      } 
     } 
    } catch (SQLException sql) { 
     addErrorMessage(sql.getMessage()); 
    } 
    return threadlist; 
} 

這未必是一個良好的編碼習慣,然而,這是工作的罰款單用戶,但我的要求是由多個用戶訪問。任何人都可以告訴我,我怎麼能做到這一點。提前致謝。

回答

0

如果您需要在兩個bean之間的有限會話範圍內維護數據,我建議您注入託管的bean。你可以通過使用@ManagedProperty來註釋一個不同的Bean。然後你可以很容易地訪問這個bean的方法。在這裏你可以找到更多,以及一個例子。 http://www.mkyong.com/jsf2/injecting-managed-beans-in-jsf-2-0/

+0

感謝您的快速回復。我仍然收到ExhaustedResultSet和Closed ResultSet錯誤。但這必須通過會話來區分嗎?請讓我知道如何超過這個錯誤。 – 2015-03-02 13:33:39