2011-09-07 87 views
0

我有一个页面tables.jspx,它显示了所有表的dataTable并有一个createTable.jspx的链接;当我创建一个新表时,它会返回到tables.jspx,但它不会显示新表的列表。 (tablesBean和createTableBean是请求范围)。我遵循BalusC教程http://balusc.blogspot.com/2006/06/using-datatables.html懒惰地初始化getter表中的表列表。就我而言,如果我的bean是请求范围不应该在请求完成后被销毁?导航来自tables.jspx - > createTable.jspx - > tables.jspx。我希望在创建新表后返回到显示新表的新列表的表格列表。请帮我理解我做错了什么。请求作用域bean JSF

这里是我的代码返回在吸气我的表的列表(简体):

public List getTables(){ 
    if(tables==null){ //lazy initialization for a request bean as recommended by BalusC 
    //Return list of tables 
    } 

,但是当我回来,如果我改变这一行 if(tables==null)if(tables==null ||FacesContext.getCurrentInstance().getRenderResponse())

我的名单现实化来自createTable.jspx,当bean处于会话范围时推荐进行这种更改,但这会给我带来dataPaginator和sortColumn函数的问题(因为它会返回数据库中的新数据,编辑错误的行,因为我有一个每一行链接,编辑和删除)

回答

1

因为你没有张贴代码,我会用你上面链接解释什么可能发生的教程...

private void loadDataList() { 

     // Do your "SELECT * FROM mydata" thing. 
     try { 
      dataList = dataDAO.list(); 
     } catch (DAOException e) { 
      setErrorMessage(e.getMessage() + " Cause: " + e.getCause()); 
      e.printStackTrace(); 
     } 
    } 

你是正确的请求有作用域的bean tables将在这里创建并销毁TWICE,但每次构建时都调用上面列出的方法。这将根据数据库中的当前数据重新初始化表。

如果createTable.jspx应该修改数据库中的数据,那么可能这些更新没有发生或者新数据被请求bean过滤掉了。

+0

我不认为我的请求bean正在过滤数据:这是我的代码 – Mel

相关问题