[英]Primefaces form is not updating from within dialog
我有這樣的看法:
<h:form id="productForm">
<p:messages
id="productFormMessages"
autoUpdate="true"
redisplay="true"
globalOnly="true" />
<p:panelGrid
id="detailsGrid">
<p:row>
...
<p:column>
...
<p:outputLabel
id="fieldToUpdateId"
value="XYZ" />
<p:commandButton
action="#{bean.prepareDialog}"
update="dialogFormId"
oncomplete="PF('dialogModal').show();" />
</p:column>
</p:row>
</p:panelGrid>
</h:form>
<ui:include src="/../.../dialog.xhtml" />
這就是dialog.xhtml的樣子:
<p:dialog
id="dialogId"
widgetvar="dialogModal"
appendTo="@(body)"
modal="true"
dynamic="true">
<h:form
id="dialogFormId">
...a selectOneMenu...
<p:commandButton
id="saveButtonId"
value="Save"
actionListener="#{bean.save}"
oncomplete="PF('dialogModal').hide();"
process="@form"
update=":productForm" />
</h:form>
但是保存按鈕只是拒絕更新productForm。 它確實更新了productFormMessages(我猜這是由於autoUpdate引起的),但是表單只是不更新。 我需要從瀏覽器重新加載頁面,以使其反映最新數據。 我嘗試了許多不同的方法來做到這一點。 1.使用p:component直接在update屬性中引用outputLabel。 2.(1)還使用表單ID和panelGrid ID。 3.在update屬性中使用完整的客戶端ID(帶和不帶“:”)。 類似地,使用表單ID和panelGrid ID。 4.將客戶端ID添加到Bean中的呈現ID,然后在其上調用partialViewContext#update方法。 4.將partialViewContext#setRenderAll設置為true。 4.作為代碼的最后一次嘗試,更新了整個productForm。 並不是很糟糕,因為fieldToUpdateId只是我需要在表單中更新的字段之一。 但是無論哪種方式,它都不起作用。
顯然,數據被保存在后端,因為頁面重新加載會為我提供最新數據。 但是我只是無法獲取對話框來更新從中調用它的表單。 我沒主意了。 我究竟做錯了什么?
從理論上講應該可以,但是請檢查HTML源代碼中的按鈕,以確保刷新html的哪一部分。 它應該有這樣的東西。
onclick =“ PrimeFaces.ab({s:'dialogFormId:saveButtonId1', u:'productForm' ,onco:function(xhr,status,args){PF('dialogModal')。hide();;}}));返回假;”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.