2015-03-02 67 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