вызывать p:confirmDialog только при успешной проверке в jsf

У меня есть следующее confirm dialog

<p:confirmDialog global="true" showEffect="fade" hideEffect="fade" header="Modal Dialog"  modal="true" width="430" height="120" >
            <p:commandButton value="Ok" type="button" styleClass="ui-confirmdialog-yes myButton" icon="ui-icon-check" style="float:right;font-family:verdana, Arial; font-size:10pt; color:#ffffff; font-weight:bold;text-align:center;"/>
            <p:commandButton value="Cancel" type="button" styleClass="ui-confirmdialog-no myButton" icon="ui-icon-close" style="float:right;font-family:verdana, Arial; font-size:10pt; color:#ffffff; font-weight:bold;text-align:center;"/>
        </p:confirmDialog>

и вызовите подтверждение следующим образом:

<p:commandLink style="text-decoration: none;" global="false" action="#{resetPasswordWindowController.changePassword()}" update="@form" >
                        <p:panelGrid id="loginButtonGrid" layout="tabular"  styleClass="loginButtonGrid" >
                            <p:row styleClass="loginButtonGridRow">
                                <p:column styleClass="loginButtonGridText lighterGreenBackground roundLeftCorners" >
                                        Reset
                                </p:column>
                            </p:row>
                        </p:panelGrid>
                        <p:confirm header="Reset Password" message="Are you sure?" icon="ui-icon-alert" />
                    </p:commandLink>

Он отлично работает, как я и ожидал, но диалоговое окно подтверждения вызывается даже до того, как произойдет проверка на стороне сервера.

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

Expected Results would be :

1. Validate the password and confirm password and if they are valid only show the confirm dialog and proceed to save based on the confirmation we get from confirm dialog.

Thanks

person Joe    schedule 28.07.2016    source источник


Ответы (1)


У вас есть (как минимум) два варианта:

  1. Отправьте поля пароля на сервер через ajax и выполните проверку в этом круговом обходе. Если «ОК», включите commandLink, в котором затем есть подтверждениеDialog.

  2. Используйте не ConfirmDialog, а обычный диалог. Это при нажатии на commandLink отображается, если нет проверки, как здесь: Как отображать диалог только после завершения успешной отправки формы

лично я предпочитаю вариант 1

person Kukeltje    schedule 28.07.2016