繁体   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