2011-09-07 116 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

相關問題