Оставьте p: диалог открытым, если проверка не удалась - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть простая страница с таблицей данных.Над таблицей есть кнопка для добавления новой строки таблицы.Эта кнопка открывает всплывающую форму с регистрационной формой.Объект, который создается в этой форме, имеет набор проверки bean-компонента.Теперь, когда я отправляю неверную форму, данные не добавляются, создается сообщение, и всплывающее окно закрывается.

Моя проблема заключается в том, что я хочу оставить всплывающее окно открытым, если проверка выполняетсяне пройдено.

Код всплывающего окна:


<p:dialog header="New company registration" widgetVar="cmpRegDialog" modal="true" showEffect="fade" hideEffect="fade" resizable="false">
                            <p:outputPanel id="cmpRegistration" style="text-align:center;">
                                <h:panelGrid id="cmpRegistrationGrid" columns="3" columnClasses="label,value" cellpadding="5">

                                    <p:outputLabel for="cmpNameR" value="Name:"/>
                                    <p:inputText id="cmpNameR" value="#{companyBean.newCompany.name}" />
                                    <p:message for="cmpNameR" />

                                    <p:outputLabel for="cmpAddressR" value="Address:"/>
                                    <p:inputText id="cmpAddressR" value="#{companyBean.newCompany.address}" />
                                    <p:message for="cmpAddressR" />

                                    <p:outputLabel for="cmpIcoR" value="ICO:"/>
                                    <p:inputText id="cmpIcoR" value="#{companyBean.newCompany.ico}" />
                                    <p:message for="cmpIcoR" />

                                    <p:commandButton value="Submit" styleClass="secondary-btn flat" action="#{companyBean.registerNewCompany()}" update=":companyRegistrationForm :companiesOverviewForm"/>
                                    <p:commandButton value="Reset" update="cmpRegistrationGrid" process="@this" style="margin-right:10px; width: auto;" styleClass="indigo-btn" >
                                        <p:resetInput target="cmpRegistrationGrid" />
                                    </p:commandButton>
                                </h:panelGrid>
                            </p:outputPanel>
                        </p:dialog>

1 Ответ

1 голос
/ 25 сентября 2019

Да, просто добавьте это к своей кнопке «Отправить» oncomplete="if (!args.validationFailed) PF('#cmpRegDialog').hide();"

<p:commandButton value="Submit" 
                 styleClass="secondary-btn flat" 
                 action="#{companyBean.registerNewCompany()}" 
                 update=":cmpRegistration :companiesOverviewForm"/>
                 oncomplete="if (!args.validationFailed) PF('#cmpRegDialog').hide();"

В основном закрывайте диалоговое окно, только если не было ошибки проверки.ПРИМЕЧАНИЕ: убедитесь, что не обновляете = "" форму, заключающую диалог, иначе ваш диалог будет закрываться каждый раз.Вам следует только обновить панель внутри диалогового окна «cmpRegistration», как я это делал выше.

...