簡體   English   中英

p:ajax rowEditCancel事件后,p:dataTable中帶有p:ajax的p:selectOneMenu不重置

[英]p:selectOneMenu with p:ajax in p:dataTable not reset after p:ajax rowEditCancel event

我有一個關於使用行編輯模式在p:dataTable中重置帶有p:ajax元素的f:selectOneMenu的問題。 當我取消行編輯時,除包含p:ajax元素的f:selectOneMenu之外,每個字段(包括p:ajax的其他f:selectOneMenu元素)中的所有更改都將正確重置。

如果我刪除了相關的p:ajax元素,則f:selectOneMenu也將正確重置。

有什么建議可以解決我的問題?

這是有關的xhtml代碼段:

<h:form id="tradingPartnersForm">   
  <p:dataTable id="tradingPartnerRow" styleClass="partnersTable" var="partnerText"
      value="#{tradingPartners.tradingPartnerList}" editable="true" >

    <p:ajax event="cellEdit" listener="#{tradingPartners.onRowEdit}" update=":messages" />
    <p:ajax event="rowEditCancel" listener="#{tradingPartners.onRowCancel}" update=":messages" />

    ... // other fields 

    <p:column headerText="#{someLabel}">
      <p:cellEditor>
        <f:facet name="output">
          <h:outputText value="#{partnerText.rolle}" />
        </f:facet>
        <f:facet name="input">
          <p:selectOneMenu value="#{partnerText.rolle}">
            <f:selectItems value="#{tradingPartners.partnerKindsMap.entrySet()}" var="partnerKindsEntry" itemValue="#{partnerKindsEntry.key}" itemLabel="#{partnerKindsEntry.value}" />
              <p:ajax event="change" execute="@this" update="l1group l2group" />
          </p:selectOneMenu>
        </f:facet>
      </p:cellEditor>
    </p:column>

    ... // other fields 

    <p:column style="width:32px">
      <p:rowEditor />
    </p:column>
  </p:dataTable>
</h:form>

好吧,它表明素數行編輯取消事件工作正常。 這個問題是自制的,並且是由ajax調用引起的:

<p:ajax event="change" execute="@this" update="l1group l2group" />

在這里,在選擇一個新值之后,通過ajax調用就可以在select中使用bean的屬性。 因此,從技術上講,如果取消編輯后重置了選擇,它將顯示新選擇的值。

似乎可以通過插入存儲bean初始屬性值的隱藏文件來更改此行為:

<p:column headerText="#{vtdb['acquirepartners.column5']}">
  <h:inputHidden value="#{partnerText.rolle}" id="partnerTextRoleBackup" />
  <p:cellEditor>
    <f:facet name="output"><h:outputText value="#{partnerText.rolle}" /></f:facet>
    <f:facet name="input">
      <p:selectOneMenu value="#{partnerText.rolle}">
        <f:selectItems value="#{tradingPartners.partnerKindsMap.entrySet()}" var="partnerKindsEntry" itemValue="#{partnerKindsEntry.key}" itemLabel="#{partnerKindsEntry.value}" />
        <p:ajax event="change" execute="@this" update="l1group l2group" />
      </p:selectOneMenu>
    </f:facet>
  </p:cellEditor>
</p:column>

但是目前,我對此行為沒有明顯的解釋!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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