2013-04-25 44 views
0

如何更新primefaces.Datatable更新中的datatable只有當我刷新頁面。我發現了一些解決方案,但他們都沒有爲我工作。例如,當我更新到「:companyForm:companyPanel」保存按鈕消除器。我刪除冒號,現在我可以看到按鈕,但仍然不更新數據表。這是我的jsf頁面;primefaces如何更新數據表

<h:form id="companyForm" prependId="false"> 
    <p:panel id="companyPanel"> 
    <p:dataTable id="companyListTable"> 
    //columns 
    </p:dataTable> 
    </p:panel> 

<p:outputPanel id="newDatePanel"> 
    <p:commandButton value="Save"           
    update="companyForm:companyPanel 
    companyForm:newDatePanel"           
    action="#{myController.save()}"/> 
</p:outputPanel> 
</form> 

和我的彈簧控制器;

init(){ 
    companyList = service.getAllCompany(); 
} 

public void save(){ 
    service.save(company); 
} 
+0

託管bean的範圍是什麼? – 2013-04-25 10:21:14

+0

因爲你正在使prependId =「false」,那麼在更新不要把表單ID,它應該是這樣的,更新=「:companyListTable」 – 2013-04-25 10:22:13

+0

「我刪除冒號,現在它工作」,你的代碼工作正常嗎? 「 – 2013-04-25 10:23:09

回答

2

其實你已經搞砸了,否則組件會被刷新。

組件的實際客戶端ID取決於您的標籤所在的命名容器。在這種情況下,命名容器是<h:form>。如果您在表單標記中包含prependId="false"媒體資源,嵌套<p:panel id="companyPanel">的客戶端ID將爲companyPanel,否則(如果您完全省略了prependId) - 它將是companyForm:companyPanel

不過,只要你想在同一命名容器內更新組件(形式),你不需要用表格ID前綴它,讓它簡單地<p:commandButton update="companyPanel">:沒有冒號,沒有形式的ID,是有任何。

在您的代碼現在的狀態下,沒有編號爲companyForm:companyPanel的組件。

+0

感謝它現在的作品 – 2013-04-25 10:54:18

+0

不客氣! – skuntsel 2013-04-25 10:55:04