0

我正在处理登录页面,其中有 2 个输入字段用户名和密码以及 2 个提交按钮登录并忘记密码。所有这 4 个元素都在一个形式中。我已经对用户名密码的空输入应用了验证。如果用户在不提供用户名和密码的情况下单击登录,则会显示一些 primefaces 消息。忘记密码是一个弹出窗口,其中还有两个字段用户名和电子邮件,这里也有相同的空白验证。我的问题是,当我在没有提供任何输入的情况下单击登录时,它会弹出忘记密码窗口以及用户名和密码验证错误。以下是我的代码。谢谢

登录页面

<h:form >
    <p:panel id="panel" >  
    <p:focus context="panel"/>  
      <h:panelGrid >  
            <h:outputLabel for="firstname" value="#{app.username} : " style="font-weight:bold; font-size:12px;"> 
            <h:outputLabel value="*" style="color:red; font-size:12px;"/></h:outputLabel>  
            <p:inputText id="firstname" required="true" label="Firstname"    value="#{userManageBean.user.userName}" size="35" maxlength="10" requiredMessage="User Name is required."/>  
            <p:message for="firstname" />  
            <br/> 

            <h:outputLabel for="surname" value="#{app.paswrd} : "  style="font-weight:bold; font-size:12px;">  
            <h:outputLabel value="*" style="color:red; font-size:12px;"/></h:outputLabel>
            <p:inputText id="surname" required="true" label="#{app.paswrd}" value="#{userManageBean.user.password}" type="password" size="35" maxlength="10" requiredMessage="Password is Required"  />  
            <p:message for="surname" />
           <h:outputText value="#{userManageBean.message}" style="font-weight:bold; font-size:12px; color:red; "></h:outputText>



        </h:panelGrid> 
            <br/>


        <p:commandButton id="SubmitButton1" value="#{app.log_in}" action="#{userManageBean.submitLoginUser}" ajax="false" />   

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <p:commandButton value="#{app.forgotpwd}" onclick="dlg1.show();"  ajax="false" />

 </p:panel>   
  </h:form>

弹出

<h:form>


    <p:dialog header="#{app.forgotpwd}" widgetVar="dlg1"  resizable="false"  width="300" showEffect="clip" hideEffect="fold" modal="true"  visible="#{facesContext.validationFailed}" >

             <table> 
             <tr>
              <td><h:outputText value="#{app.username} : "/>  <h:outputText value="*" style="color:red; font-size:12px;"/></td>
               <td> <p:inputText id="txt" value="#{forgetPwdBean.userID}"  required="true" requiredMessage="User Name is Required" />
               <p:message for="txt" ></p:message>
               <!--   <p:tooltip for="txt" value="#{viewcontrollerBundle.username}" showEffect="fade" hideEffect="fade" /> -->
                 </td>

              </tr>


                <tr><td>
                 <h:outputText value="#{app.emp_id} : "/><h:outputText value="*" style="color:red; font-size:12px;"/></td>
               <td> <p:inputText id="txt1" value="#{forgetPwdBean.emailID}" required="true" requiredMessage="Email is Required"/>
               <p:message for="txt1"></p:message>
                <!-- <p:tooltip for="txt1" value="#{viewcontrollerBundle.mailid}" showEffect="fade" hideEffect="fade" /> -->
                </td>
                </tr>

               <tr><td><p:commandButton value="#{app.submit}" action="#{forgetPwdBean.forgetPassword}" ajax="false"/>
               </td></tr> 

                </table>  

            </p:dialog>
</h:form> 
4

1 回答 1

1

以下代码会在表单验证失败时弹出对话框。

<p:dialog  ... visible="#{facesContext.validationFailed}">

编辑(为什么没有上面的代码不显示对话框):

根本问题是您的 commandButtons 不是 ajax,因此页面将完全重新加载,您可能只看到一瞬间的对话框

如果您查看primefaces 展示,您会看到使用 onclick="dlg.show()" 的按钮使用 ajax:

<p:commandButton id="modalDialogButton" value="Modal" onclick="dlg2.show();" type="button"/>
于 2012-12-03T06:49:09.030 回答