<p: dataScroller> автоматически перезагружается при редактировании сущностей

У меня есть a p:datascroller, настроенный для отображения списка сущностей и отложенной загрузки их после нажатия кнопки "Дополнительно".

<h:form id="investigationOperationsForm">
        <p:dataScroller
            value="#{investigationManagerBackingBean.lazyLoadedInvestigationOperations}"
            var="investigationOperation" chunkSize="9" lazy="true"
            rowIndexVar="test">
            <f:facet name="header">
                    Scroll down to load investigations
            </f:facet>


            <h:panelGrid columns="2" style="width:100%"
                columnClasses="logo,detail">

                <p:commandLink oncomplete="PF('investigationDialogW').show()"
                    update="investigationEditorForm" immediate="true">
                    <f:setPropertyActionListener value="#{investigationOperation}"
                        target="#{investigationManagerBackingBean.selection}" />
                    <p:graphicImage alt="Investigation Operation"
                        url="/images/common/investigation-operation.png" />
                </p:commandLink>


                <!--  h:outputText value="#{investigationOperation.name}" /-->
                <p:outputPanel id="pnl">
                    <h:panelGrid columns="2" cellpadding="5">

                        <h:outputText value="Name:" />
                        <h:outputText value="#{investigationOperation.name}"
                            style="font-weight: bold" />

                        <h:outputText value="Description:" />
                        <h:outputText value="#{investigationOperation.shortDescription}"
                            style="font-weight: bold" />

                    </h:panelGrid>
                    <p:draggable for="pnl" />
                </p:outputPanel>
            </h:panelGrid>
            <f:facet name="loader">
                <p:outputPanel
                    visible="#{investigationManagerBackingBean.lazyLoadedInvestigationOperations.rowCount gt 10}"
                    rendered="#{investigationManagerBackingBean.lazyLoadedInvestigationOperations.rowCount gt 10}">
                    <p:commandLink value="More" />
                </p:outputPanel>
            </f:facet>

        </p:dataScroller>

    </h:form>

Кроме того, у меня есть диалоговое окно, которое появляется, когда p:commandLink oncomplete Метод выполняется, где я могу обновить значение текущего выбора и сохранить изменения.

<p:dialog id="investigationDialog"
        header="#{msg['inv-manager.invDialog.header.title']}"
        widgetVar="investigationDialogW" minWidth="400" minHeight="400"
        resizable="false" position="center center" modal="true">

        <p:panel id="investigationEditorPanel">
            <h:form id="investigationEditorForm">
                <h:panelGrid columns="2" cellpadding="5">

                    <h:outputLabel for="name"
                        value="#{msg['inv-manager.invDialog.nameFieldLabel']}" />
                    <p:inplace id="nameInplaceEditor" editor="true">
                        <p:inputText
                            value="#{investigationManagerBackingBean.selection.name}"
                            id="name" required="true" immediate="true"
                            label="#{msg['inv-manager.invDialog.nameFieldInputLabel']}" />
                    </p:inplace>


                    <h:outputLabel for="shortDescription"
                        value="#{msg['inv-manager.invDialog.shortDescriptionFieldLabel']}" />
                    <p:inplace id="shortDescriptionInplaceEditor" editor="true">

                        <p:inputText
                            value="#{investigationManagerBackingBean.selection.shortDescription}"
                            id="shortDescription" required="true" immediate="true"
                            label="#{msg['inv-manager.invDialog.shortDescriptionFieldInputLabel']}" />
                    </p:inplace>

                    <h:outputLabel for="description"
                        value="#{msg['inv-manager.invDialog.descriptionFieldLabel']}" />
                    <p:inputTextarea id="description" required="false"
                        label="#{msg['inv-manager.invDialog.descriptionFieldInputLabel']}"
                        immediate="true"
                        value="#{investigationManagerBackingBean.selection.description}" />


                    <p:commandButton id="okButton"
                        value="#{msg['inv-manager.invDialog.okButton']}" type="submit"
                        partialSubmit="true" process="investigationEditorForm"
                        action="#{investigationManagerBackingBean.createOrUpdate()}"
                        onclick="dlg.hide();" />

                </h:panelGrid>
            </h:form>
        </p:panel>

    </p:dialog>

Поддерживающий компонент настроен на @ViewScoped и все работает как определено. Однако после обновления значения p:datascroller сбрасываются и выполняется метод загрузки модели отложенной загрузки, а контроллер данных заполняется новыми значениями из базы данных.

У меня нет ссылки на контроллер данных или содержащую его форму в диалоговом окне p: и мне интересно, почему контроллер данных обновляется автоматически? Чего мне не хватает в уравнении. Я пропустил что-то или что-то специфическое для модели p: datascroller, которое мне нужно учитывать при использовании этого подхода?

Надеемся на опыт сообщества в решении этой проблемы. Спасибо заранее:)

0 ответов

Другие вопросы по тегам