簡體   English   中英

Primefaces表單未從對話框中更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM