我在使用 p:dataTable 中的 p:ajax 元素重置 f:selectOneMenu 时出现问题模式。当我取消行编辑时,除了 f之外,每个字段(还有其他 f:selectOneMenu 元素,没有 p:ajax )的所有更改都会被正确重置: selectOneMenu ,其中包含 p:ajax 元素。
如果删除有关的 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>
答案 0 :(得分:0)
好吧,接缝那个primefaces行编辑取消事件工作正常。问题是自制的,并且来自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>
但目前我对这种行为没有明显的解释!