簡體   English   中英

PrimeFaces cellEdit狀態保持在哪里?

[英]Where is PrimeFaces cellEdit state maintained?

有人知道上次顯示ap:cellEditor的輸入或輸出構面時PF在何處/如何維護狀態嗎? 我希望能夠重置該狀態,以便更好地控制PF何時需要觸發ap:dataTable的cellEdit事件。

我問是因為我有一個帶有可編輯p:dataTable(editMode =“ cell”)的屏幕,在此屏幕上,用戶可以在ap:cellEditor的輸入面打開時觸發ap:remoteCommand,而p:remoteCommand則刷新屏幕,以便所有p:cellEditor返回顯示其輸出構面(這是p:remoteCommand的正確行為)。 問題在於刷新p:remoteCommand之后,PF似乎認為所有p:cellEditor仍在顯示其輸入構面(即使它們又回到了顯示其輸出構面),因此,每當用戶單擊某個單元格時,p :dataTable的cellEdit立即被觸發,以使該單元僅短暫地從其輸出構面切換到其輸入構面。 換句話說,在p:remoteCommand刷新屏幕后,PF似乎認為對ap:cellEditor的任何單擊都應觸發p:dataTable的cellEdit事件,因此,當用戶單擊一個單元格時,他們只會看到輸入面的閃爍cellEdit事件之前的眼睛使該單元格翻轉回輸出構面。

關於可以使p:remoteCommand調用以重置PF用於確定是否觸發ap:dataTable的cellEdit事件的時間的JavaScript或Java代碼的任何想法?

我在Wildfly 9.0.1中使用PF 5.1.13。

供參考,這是(經過消毒的)p:dataTable

<h:form id="form">
<p:outputPanel styleClass="tablesPanel" id="tablesPanel">
    <c:forEach var="table" items="#{view.tables}">             
        <p:dataTable id="table-#{table.tableIdSuffix}" widgetVar="tableWidget-#{table.tableIdSuffix}" value="#{table.rowAsList}" var="row" styleClass="compressed no-highlight" editable="#{view.allowEdit()}" editMode="cell">
                    <p:ajax event="cellEdit" listener="#{view.handleCellEdit}" oncomplete="onCellEdit()"/>
                    <p:columns value="#{table.row.cells}" var="cell">
                        <f:facet name="header">
                            <h:outputText value="#{cell.columnHeader}"/>
                        </f:facet>
                        <p:cellEditor>
                            <f:facet name="output">
                                <h:outputText rendered="#{view.allowEdit()}" styleClass="btn-link" value="#{cell.displayText}"/>
                                <h:outputText rendered="#{!view.allowEdit()}" value="#{cell.displayText}"/>
                            </f:facet>
                            <f:facet name="input">
                                <p:selectOneMenu id="selectedCellType-#{table.tableIdSuffix}-#{cell.id}" value="#{cell.valueTypeId}" style="width: 50px" >
                                    <f:selectItems value="#{view.valueTypes}" var="vt" itemLabel="#{vt.displayPrefix}" itemValue="#{vt.id}"/>
                                </p:selectOneMenu>
                                <p:inputText id="selectedCellValue-#{table.tableIdSuffix}-#{cell.id}" value="#{cell.value}" converter="#{bigDecimalConverter}" style="width: 40px;margin-bottom: 17px"/>
                                <p:selectOneMenu id="selectedCellUnit-#{table.tableIdSuffix}-#{cell.id}" value="#{cell.unitId}" style="width: 80px">
                                    <f:selectItems value="#{view.units}" var="u" itemLabel="#{u.displaySuffix}" itemValue="#{u.id}"/>
                                </p:selectOneMenu>
                            </f:facet>
                        </p:cellEditor>
                    </p:columns>
        </p:dataTable>
    </c:forEach>
</p:outputPanel>
</h:form>

這是打開單元格的輸入構面時可以調用的(經過消毒的)remoteCommand

<h:form id="changeGroupForm" class="hide">
    <p:remoteCommand name="ajaxGroupUpdate" actionListener="#{view.refreshTables()}" update=":form:tablesPanel"/>
    <p:inputText id="groupId" value="#{view.groupId}"/>
</h:form>

為了完整起見,這也是cellEdit事件的oncomplete屬性的(經過消毒的)remoteCommand

<h:form>
    <p:remoteCommand name="onCellEdit" action="#{view.reportCellEdit()}" update=":form:tablesPanel"/>
</h:form>

我只是有完全相同的問題,答案是:

<p:remoteCommand name="onCellEdit" update="tableId" oncomplete="PF('tableId').currentCell=null;"/>

但說實話我不喜歡,因為充其量似乎很黑。

暫無
暫無

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

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