-1

ダイアログを開くメニューを取得しました (primefaces 3.5)

                <h:form>
                <p:graphicImage id="img" value="../resources/img/user.jpg" style="cursor:pointer" title="My Profile" height="70px"/>  
                <p:overlayPanel id="imgPanel" for="img" showEffect="blind" hideEffect="fade" showEvent="mouseover" hideEvent="fade"> 
                    <h:outputLink id="editLink" value="javascript:void(0)" onclick="profiledlg.show()" title="login">Edit profile</h:outputLink><br />
                    <h:outputLink id="loginLink" value="javascript:void(0)" onclick="passwddlg.show()" title="login">Change password</h:outputLink><br />
                    <p:commandLink action="#{authBackingBean.logout}" value="Logout" />
                </p:overlayPanel>
            </h:form>

ダイアログは次のようになります。

                <h:form id="profiledialogform">
                <p:dialog id="profiledialog" header="Edit profile" widgetVar="profiledlg" resizable="false">  
                    <h:panelGrid columns="2" cellpadding="5">  
                        <h:outputLabel for="email" value="Email:" />  
                        <p:inputText value="#{editProfileBean.newEmail}"   
                                id="email" required="true" label="email" />  

                        <f:facet name="footer">  
                            <p:commandButton id="editProfileButton" value="Edit profile"   
                                             actionListener="#{editProfileBean.editProfile}" oncomplete="profiledlg.hide()" update=":profiledialogform" >
                                <p:resetInput target=":profiledialogform" />  
                            </p:commandButton>
                        </f:facet>  
                    </h:panelGrid>  
                </p:dialog>
            </h:form>

初めて使用するときは意図したとおりに機能しますが、2 回目 (またはそれ以上) に別の電子メールを入力してボタンをクリックすると、ダイアログは閉じますが、メソッドは呼び出されません。手動でページを更新した場合のみ (F5 )。

Bean は @RequestScoped です

editProfile メソッドの最後で、newEmail の値を "" (空の文字列) に設定しました。

何か言いたいことはありますか?

4

1 に答える 1

2

私はついにそれを管理したので、その答えを皆さんと共有したいと思います.

Glassfish 4.0 (JSF 2.2 に同梱) を使用している場合は、primefaces 4.0 (現在は SNAPSHOT) を使用する必要があります。次のコードは意図したとおりに機能します。

            <div id="header_right" class="floatr">
            <h:form>
                <p:graphicImage id="img" value="../resources/img/user_1.jpg" style="cursor:pointer" title="My Profile" height="70px"/>  
                <p:overlayPanel id="imgPanel" for="img" showEffect="blind" hideEffect="fade" showEvent="mouseover" hideEvent="fade"> 

                    <p:commandLink value="Edit profile" update=":profiledialog" oncomplete="PF('profiledlg').show()">
                        <p:resetInput target=":profiledialogform" />
                    </p:commandLink><br />
                    <p:commandLink value="Change password" update=":passwddialog" oncomplete="PF('passwddlg').show()">
                        <p:resetInput target=":passwddialogform" />
                    </p:commandLink><br />
                    <p:commandLink action="#{authBackingBean.logout()}" value="Logout" />
                </p:overlayPanel>
            </h:form>

                <p:dialog id="passwddialog" header="Change password" widgetVar="passwddlg" resizable="false"> 
                    <h:form id="passwddialogform">
                        <h:panelGrid columns="2" cellpadding="5">  
                            <h:outputLabel for="oldpasswd" value="Old password:" />  
                            <h:inputSecret value="#{changePasswordBean.oldpassword}"   
                                    id="oldpasswd" required="true" label="oldpassword" />  

                            <h:outputLabel for="password" value="New password:" />  
                            <h:inputSecret value="#{changePasswordBean.newpassword}"   
                                    id="password" required="true" label="password" />  

                            <f:facet name="footer">  
                                <p:commandButton id="changePasswordButton" value="Change password"   
                                                 action="#{changePasswordBean.changePassword}" update="@form" 
                                                 oncomplete="if (args &amp;&amp; !args.validationFailed) PF('passwddlg').hide()">
                                </p:commandButton>
                            </f:facet>  
                        </h:panelGrid> 
                    </h:form>
                </p:dialog>


                <p:dialog id="profiledialog" header="Edit profile" widgetVar="profiledlg" resizable="false"> 
                    <h:form id="profiledialogform">
                        <h:panelGrid columns="2" cellpadding="5">  
                            <h:outputLabel for="email" value="Email:" />  
                            <p:inputText value="#{editProfileBean.newEmail}"   
                                    id="email" required="true" label="email" />    
                        </h:panelGrid> 
                        <p:commandButton value="Edit profile" action="#{editProfileBean.editProfile}"
                                         update="@form" oncomplete="if (args &amp;&amp; !args.validationFailed) PF('profiledlg').hide()" />
                    </h:form>
                </p:dialog>

        </div>
于 2013-09-02T11:09:21.077 に答える