可能重複:
How to ajax-update the p:dataTable from inside the p:dataTable itself?刷新數據錶行(添加,修改,刪除...)
在我的XHTML頁面我有一個包含型組對象的DataTable,並添加一個新的組到數據庫,並最終在數據庫中的按鈕 我使用sessionScoped託管的Bean,所以我需要刷新我的數據表後添加一條新的記錄。
爲此,我使用的命令按鈕組件的更新屬性,但數據表不刷新,這裏是代碼:
<p:fieldset legend="Groups">
<p:commandButton id="newGroup" value=" New Group" onclick="newGoupDlg.show();"
type="button" update="groupsDataTable"/>
<br/>
<p:dataTable id="groupsDataTable" var="group" value="#
{projectAdminisrationMB.groupsList}"
rowKey="#{group.name}"
rowIndexVar="rowIndex"
binding="#{table}">
<f:facet name="header">
</f:facet>
<p:column id="column2">
<f:facet name="header">
<h:outputText value="Group Name"></h:outputText>
</f:facet>
<p:graphicImage value="/images/group/#{group.name}.gif" />
<h:commandLink action="#{projectAdminisrationMB.showGroupDetails}"
value="#{group.name}">
<f:setPropertyActionListener target="#{projectAdminisrationMB.selectedGroup}"
value="#{group}" />
<f:setPropertyActionListener target="#{projectAdminisrationMB.selectedGroupName}"
value="#{group.name}" />
<f:setPropertyActionListener target="#
{projectAdminisrationMB.selectedGroupDescription}" value="#{group.description}" />
<f:setPropertyActionListener target="#
{projectAdminisrationMB.selectedGroup.dbRowIndex}" value="#{table.rowIndex}" />
</h:commandLink>
</p:column>
<p:column id="column3">
<f:facet name="header">
<h:outputText id="text3" value=" Group Description "></h:outputText>
</f:facet>
<h:outputText value="#{group.description}"></h:outputText>
</p:column>
<f:facet name="footer">
</f:facet>
</p:dataTable>
<p:dialog header="New Group" widgetVar="newGoupDlg" width="750"
showEffect="explode" hideEffect="explode">
<br/> <br/>
<h:outputText value=" New Group : " />
<p:inputText id="newGroupName" value="#
{projectAdminisrationMB.newGroup.name}">
<f:validator validatorId="requiredValidator"></f:validator>
</p:inputText>
<br/> <br/>
<h:outputText value="Group Description :" />
<br/> <br/>
<p:editor id="newGroupDescription" value="#
{projectAdminisrationMB.newGroup.description}" width="600"/>
<br/> <br/>
**<p:commandButton id="ValidateNewGroup" value="Validate"
actionListener="#{projectAdminisrationMB.addNewGroup}"
onclick="newGoupDlg.hide()" update="groupsDataTable" ></p:commandButton>**
<p:commandButton id="CancelNewGroup" value=" Cancel "
onclick="newGoupDlg.hide()"></p:commandButton>
</p:dialog>
<br/> <br/>
</p:fieldset>
任何想法將apprecited
嘗試檢查在Firebug的錯誤。可能的原因是你的'dataTable'已經預置了'id'。嘗試將'prependId ='false''設置爲'form'或者使用'update =「:groupsDataTable」'或'update =「fooFormId:groupsDataTable」'。此外,我建議不要使用'onclick',而是在按鈕上使用'oncomplete' - 有時會導致問題(但當然這很重要)。 – Fallup
這些組件的封裝形式在哪裏?你是使用SessionScoped bean作爲整個頁面的支持bean還是隻使用容器來訪問數據庫? – kolossus
@kolossus sessionScoped bean用於整個頁面 – AmiraGL