验证密码在p:对话框中不起作用

时间:2015-04-01 11:41:02

标签: jsf primefaces

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

这是我的代码

<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>

    ...

感谢任何建议!

1 个答案:

答案 0 :(得分:2)

如果你使用了&appe ;To =&#34; @(正文)&#34;&#39;,你需要在对话框中输入一个表格,可以在PrimeFaces documentation中阅读。但要确保它是在原始的xhtml中没有嵌套!

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