2013-10-08 32 views
0

所以我哈瓦其中有4 columns.The 4列有一個按鈕,刪除記錄,當按鈕被cliked模態對話框打開表,然後它要求確認有(或)NO.So當我點擊是記錄會從數據庫中刪除,也模態dilog關閉,但該表沒有得到refreshed.If我手動刷新記錄不顯示。表不清爽的primefaces p刪除行後:數據表

這是我在JSF代碼模態對話框:

<p:dialog id="modalDialog" header="Delete User?" modal="true" 
resizable="false" draggable="false" widgetVar="delUserConf"> 
    <h:panelGrid id="display" columns="2"> 
    <h:outputLabel value="Name" style="font-weight: bold"/> 
    <h:outputText value="#{userController.selectedBean.firstName}" style="border: none"/> 
</h:panelGrid> 
<p:commandButton oncomplete='delUserConf.hide();' actionListener="#{mybeanr.deleteUser(userController.selectedBean)}" id="yesDeleteUser" value="#{bundle.ListUserDeleteYes}" update=":userForm"/> 
<p:commandButton id="noDelete" onclick="delUserConf.hide();" action="/views/user/UserManagement.xhtml" value="#{bundle.ListUserDeleteNo}" style="margin-left: 15px;" update=":userForm:dataTab"/> 
</p:dialog> 

其中「窗體」是形式的如果。該對話框按鈕是不是在p:在bean datatable.My代碼:

public String deleteUser(UserBean userbean) { 
//do something 
selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex(); 

if(//condiition checking) 
{ 
    JsfUtil.addErrorMessage("Not Allowed"); 
} 
else 
{ 
    try { 
     //some logic here 
     JsfUtil.addSuccessMessage("Success"); 
    } catch (Exception e) { 
     JsfUtil.addErrorMessage("Error"); 
    } 
    //performDestroy(); 
    recreatePagination(); 
    recreateModel(); 
} 
return "UserDetails"; 
} 

數據表和表單代碼:

<h:form id="userForm"> 
<p:growl id="growl" showDetail="true" sticky="true" /> 
    <div class="dataTableWrap"> 
    <p:dataTable value="#{mybean.usersList}" var="item" id="dataTab" widgetVar="usersTable" editable="true" rowKey="#{item.emailAddress}"> 
    have some columns here and just displaying the values of these columns from the beans. 
    </p:datatable> 
</h:form> 

的UserDetails是JSF頁面,在這裏我有這個table.If您注意我從bean返回了一些消息。這工作正常,但我不明白爲什麼表沒有被刷新。有誰能讓我知道爲什麼?

+0

你能發佈表單和數據表的代碼嗎?你有沒有檢查你的javascript錯誤? –

+0

添加的數據表和表單代碼的問題... – Valla

+0

沒有腳本錯誤也.. – Valla

回答

1

你更新mybean.usersList刪除呢?我不知道是什麼recreatePagination()和recreateModel()做的,但是,既然你不使用懶惰模式,嘗試在執行銷燬後,從列表中刪除已刪除的UserBean。類似於

public String deleteUser(UserBean userbean) { 
//do something 
selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex(); 

if(//condiition checking) 
{ 
    JsfUtil.addErrorMessage("Not Allowed"); 
} 
else 
{ 
    try { 
     //some logic here 
     JsfUtil.addSuccessMessage("Success"); 
    } catch (Exception e) { 
     JsfUtil.addErrorMessage("Error"); 
    } 
    //performDestroy(); 

    usersList.remove(userBean); 

    recreatePagination(); 
    recreateModel(); 
} 
return "UserDetails"; 
} 
0

當從jsf uifront結束實體中刪除時,實體不處於受管理狀態, 因此您需要合併回來以獲取託管對象,現在使用emcreateQuery(「」)刪除刪除在哪裏實體對象存在於表上,或者你可以從jsf UI執行geList()。remove(entity)。第一個選擇是從數據庫立即刷新頁面,第二個選項刪除合併後的實體將刪除,並從UI列表