0

私は2つの入力フィールドのユーザー名とパスワードと2つの送信ボタンのログインとパスワードを忘れたログインページに取り組んでいます。これらの 4 つの要素はすべて形になっています。ユーザー名パスワードに null 入力の検証を適用しました。ユーザーがユーザー名とパスワードを入力せずにログインをクリックすると、primefaces メッセージが表示されます。Forgot password はポップアップで、ユーザー名と電子メールの 2 つのフィールドもあり、同じ空白のアリデーションもここにあります。私の問題は、入力せずにログインをクリックすると、ユーザー名とパスワードの検証エラーとともにパスワードを忘れたウィンドウがポップアップすることです。以下は私のコードです。ありがとう

ログインページ

<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 に答える