在jsf和javabean中维护会话
我不熟悉JSF和beans,我需要从DB(oracle)获取一些数据并在控制台上显示。我的第一个bean将从JSF读取数据,并在第二个bean中调用适当的方法,包含数据的列表将被发送回该bean。再次基于该数据,将调用第二个bean中的另一个方法来获取额外的数据。最后,数据将发布给用户。我的第二个bean将负责数据库连接。这是我的密码。 第一粒豆子在jsf和javabean中维护会话,java,jsf,Java,Jsf,我不熟悉JSF和beans,我需要从DB(oracle)获取一些数据并在控制台上显示。我的第一个bean将从JSF读取数据,并在第二个bean中调用适当的方法,包含数据的列表将被发送回该bean。再次基于该数据,将调用第二个bean中的另一个方法来获取额外的数据。最后,数据将发布给用户。我的第二个bean将负责数据库连接。这是我的密码。 第一粒豆子 String ban = null,ban1 = null; masterlist = (ArrayList<ThreadDTO>)
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));
}
字符串ban=null,ban1=null;
主列表=(ArrayList)getMbd().getBanOrCtn(dbean);
if(masterlist.isEmpty()){
设置成功(2);
返回;
}否则{
迭代器itr=masterlist.Iterator();
while(itr.hasNext()){
ThreadDTO dto=(ThreadDTO)itr.next();
ban1=dto.getWireless_-ban();
if(ban1!=null){
ban=ban1;
打破
}
}
ctnThreadList=(ArrayList)getMbd().getThreads(dbean);
dbean.setSearchby(“无线禁令”);
dbean.setSearchValue(ban);
banThreadList=(ArrayList)getMbd().getThreads(dbean);
masterlist.clear();
masterlist=(ArrayList)getMbd().removeDuplicates(ctnThreadList,banThreadList);
setResultlist((ArrayList)getMbd().getAPI(主列表));
}
第二个豆子是
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;
}
public ArrayList getBanOrCtn(SearchDetailsDTO db)引发异常{
ArrayList threadlist1=新的ArrayList();
//在此查询
试一试{
connection=getConnections(时区);//获取连接
stmt=connection.createStatement();
rs=stmt.executeQuery(banQuery);
如果(!rs.isBeforeFirst()){
System.out.println(“空结果集”);
stmt.close();
rs.close();
connection.close();
}否则{
while(rs.next()){
ThreadDTO thread=新ThreadDTO();
//设置值的代码
打破
}
}
}捕获(SQLException sql){
addErrorMessage(sql.getMessage());
}
返回线程列表;
}
这可能不是一个好的编码实践,但是这对于单个用户来说很好,但是我的要求是多个用户可以访问。有谁能告诉我如何才能做到这一点。提前感谢。如果您需要在两个bean之间的作用域会话下维护数据,我建议您注入托管bean。您可以通过使用@ManagedProperty在不同的bean中注释bean来实现这一点。然后您就可以轻松地访问这个bean的方法。在这里你可以找到更多,以及一个例子 大卫,谢谢你的快速回复。我仍在获取ExhustedResultSet和Closed ResultSet错误。但这必须通过会话来区分,对吗?请让我知道如何克服这个错误。