验证密码在 p:dialog 中不起作用

Validation password doesn't work in p:dialog

我使用的是 PrimeFaces 4.0,我正在尝试使用对话框来更改密码。 我使用密码组件来完成这项工作它在对话框中不起作用但是当我不使用对话框时它工作正常。

这是我的代码

<h:form>
    <p:dialog widgetVar="changePw" resizable="true" appendTo="@(body)"
              modal="true" closable="false" id="changePw">

        <p:panel header="change password">

            <p:messages id="messages" showDetail="true" showSummary="false"
                        autoUpdate="true" />
            <h:panelGrid columns="2" id="matchGrid">
                <h:outputLabel for="pwdNew" value="New: *" />
                <p:password id="pwdNew" value="#{passwordBean.newPw}" feedback="true"
                            match="pwdConf" required="true"
                            validatorMessage="Pw does n't matches"
                            requiredMessage="Value required">
                </p:password>

                <p:messages showDetail="true" showSummary="false" autoUpdate="true"
                            for="pwdNew" />

                <h:outputLabel for="pwdConf" value="Confirm Password: *" />
                <p:password id="pwdConf" value="#{passwordBean.newPwConfirmation}"
                            feedback="true" required="true"
                            validatorMessage="invalid password"
                            requiredMessage="Value required">
                    <f:validateRegex pattern="[A-Za-z0-9]{8,60}" />
                </p:password>
            </h:panelGrid>
        </p:panel>

        <p:separator></p:separator>
        <p:commandButton value="Save" update="matchGrid"
                         process="@this" ajax="true"
                         actionListener="#{passwordBean.changePw}"
                         styleClass="ui-confirmdialog-yes" 
                         oncomplete="changePw.hide();"
                         icon="ui-icon-check" />

        <p:commandButton value="Cancel" process="@this"
                         onclick="changePw.hide();" styleClass="ui-confirmdialog-no"
                         icon="ui-icon-close" />
    </p:dialog>

    ...

感谢任何建议!

如果您使用 'appendTo="@(body)"',您需要对话框中的表单,以便在 PrimeFaces documentation 中阅读。但要确保它在原始 xhtml 中,而不是嵌套!

此外,按钮上的 process="@this" 会阻止提交其他输入(这在对话框外也不起作用,所以您很可能没有对话框)。所以也删除它