Primefaces закрывают модальные без диалога скрытия - PullRequest
0 голосов
/ 03 октября 2018

Я работаю с Primefaces 6.2 на JavaEE 8.
У меня есть базовое диалоговое окно с командной кнопкой, создавшей модальный режим. (Извините за плохой английский!)
Я хочу закрыть модальное окно без закрытия основного диалогового окна.
Как можно решить эту проблему?


<p:dialog header="Basic Dialog" id="user-management" widgetVar="user-management" width="700px" height="300px" resizable="false">
        <p:toolbar>
            <f:facet name="left">
                <p:commandButton type="button" title="Add" icon="ui-icon-plus" onclick="PF('userDialog').show();"/>
            </f:facet>
        </p:toolbar>
        <p:spacer/>
        <p:dataTable value="#{userGroupBean.userSet}" var="user">
            // Show user information
        </p:dataTable>
    </p:dialog>

    <p:dialog header="User"     
              widgetVar="userDialog"
              closeOnEscape="true"
              resizable="true"
              modal="true"
              showEffect="fade"
              hideEffect="fade"
              height="auto"
              width="auto">
        <h:panelGrid columns="2">
          // Some inputs ...
        </h:panelGrid>
        <p:spacer/>
        <div class="dialog-footer">
            <p:commandButton value="Save"
                             oncomplete="PF('userDialog').hide();"
                             process="@form"
                             update="user-management"
                             action="#{userGroupBean.save}"/>
        </div>
    </p:dialog>     

1 Ответ

0 голосов
/ 03 октября 2018

Основной диалог не «закрыт», он обновляется через update="user-management", и, следовательно, html, возвращаемый с сервера, помещается в html dom с диалогом в состоянии по умолчанию: закрыто.У вас есть несколько вариантов:

  • Не обновлять диалоговое окно, а обновлять его содержимое (мое предпочтительное решение), добавляя, например, панель внутри него и обновляя это
  • Установить флаг вbeanand использовать visible="#{mybean.dialogIsVisibleFlag}"
  • в завершение вызова ajax сделать PF('user-management').show()
...