在jsf和java bean中维护会话

时间:2015-03-02 07:32:37

标签: java jsf

我是JSF和bean的新手,我有一种情况需要从DB(oracle)获取一些数据并在控制台上显示。我的第一个bean将从JSF读取数据并在第二个bean中调用相应的方法,并将带有数据的列表发送回bean。基于数据,将再次调用第二个bean中的另一个方法来获取其他数据。最后,数据将发布给用户。我的第二个bean将负责数据库连接。这是我的代码。 第一个豆,

 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));

    }

Second 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;
}

这可能不是一个好的编码实践,但是这对单个用户来说工作正常,但我的要求是由多个用户访问。任何人都可以告诉我,我怎样才能做到这一点。提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果您需要在两个bean之间的作用域会话下维护数据,我建议您注入托管bean。您可以通过使用@ManagedProperty在另一个bean中注释bean来实现。然后,您可以轻松访问此bean的方法。在这里你可以找到更多,以及一个例子。 http://www.mkyong.com/jsf2/injecting-managed-beans-in-jsf-2-0/