仅在jsf中成功验证时调用p:confirmDialog

时间:2016-07-28 16:59:15

标签: jsf primefaces confirm

我有以下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

1 个答案:

答案 0 :(得分:0)

你有(至少)两个选择:

  1. 通过ajax将密码字段发送到服务器,并在该往返中完成验证。如果&#39; OK&#39;启用commandLink,然后在其中包含confirmDialog。

  2. 不要使用confirmDialog,而是使用普通对话框。如果没有像此处那样的验证,则会显示点击commandLink的内容:How to display dialog only on complete of a successful form submit

  3. 我个人更喜欢选项1