0

次の折りたたみメニュー(p:panelMenu)があるとします。

<p:panelMenu style="width:200px">
            <p:submenu label="#{uimsg.clm_title}" styleClass="pageFont">
                <!--                <p:menuitem value="Delete" actionListener="#{buttonBean.delete}"  ajax="true" icon="ui-icon-close"/>   -->
            </p:submenu>
            <p:separator />

            <!-- Sub-menu master Data  -->
            <p:submenu label="#{uimsg.trsf_title}" styleClass="pageFont">
                <p:menuitem value="#{uimsg.trsf_create}" ajax="true"
                    icon="ui-icon-arrow-1-e" url="/transfers/editTransfer.xhtml" />
            </p:submenu>
            <p:separator />


            <!-- Sub-menu master Data  -->
            <p:submenu label="#{uimsg.mst_data_title}" styleClass="pageFont">

                <!--  Clubs -->
                <p:submenu label="#{uimsg.mst_data_club_title}">
                    <p:menuitem value="#{uimsg.mst_data_show_club_title}" ajax="true"
                        icon="ui-icon-arrow-1-e" url="/clubs/showClubs.xhtml" />

                    <p:menuitem value="#{uimsg.mst_data_edit_club_title}" ajax="true"
                        icon="ui-icon-arrow-1-e" url="/clubs/editClub.xhtml" />
                </p:submenu>


                <!--  Associations -->
                <p:submenu label="#{uimsg.mst_data_assocation_title}">
                    <p:menuitem value="#{uimsg.mst_data_show_association_title}"
                        ajax="true" icon="ui-icon-arrow-1-e"
                        url="/associations/showAssociations.xhtml" />

                    <p:menuitem value="#{uimsg.mst_data_edit_association_title}"
                        ajax="true" icon="ui-icon-arrow-1-e"
                        url="/associations/editAssociation.xhtml" />
                </p:submenu>

                <!-- leagues -->
                <p:submenu label="#{uimsg.mst_data_league_title}">

                    <p:menuitem value="#{uimsg.mst_data_show_league_title}"
                        icon="ui-icon-arrow-1-e" url="/league/showLeagues.xhtml" ajax="true"/>

                    <p:menuitem value="#{uimsg.mst_data_edit_league_title}"
                        icon="ui-icon-arrow-1-e" url="/league/editLeague.xhtml" ajax="true"/>
                </p:submenu>

                <!-- Players -->
                <p:submenu label="#{uimsg.mst_data_player_title}">

                    <p:menuitem value="#{uimsg.player_menu_show}" ajax="true"
                        icon="ui-icon-arrow-1-e" url="/player/showPlayers.xhtml" />

                    <p:menuitem value="#{uimsg.player_menu_edit}" ajax="true"
                        icon="ui-icon-arrow-1-e" url="/player/editPlayer.xhtml" />

                </p:submenu>

                <!-- Confederation -->
                <p:submenu label="#{uimsg.mst_data_confed_title}">

                    <p:menuitem value="#{uimsg.mst_data_edit_confed_title}"
                        icon="ui-icon-arrow-1-e"
                        url="/confederations/showConfederations.xhtml" ajax="true" />

                    <p:menuitem value="#{uimsg.mst_data_show_confed_title}"
                        icon="ui-icon-arrow-1-e"
                        url="/confederations/editConfederation.xhtml" ajax="true" />

                </p:submenu>

            </p:submenu>

            <p:separator />

            <!-- Sub-menu Administration -->

            <p:submenu label="#{uimsg.admin_title}"
                rendered="#{auth.showAdministration() == true ? true : false }"
                id="adminDivId" styleClass="pageFont">
                <!-- User menu -->
                <p:submenu label="#{uimsg.users_admin_title}">
                    <p:menuitem value="#{uimsg.admin_show_users_title}" ajax="true"
                        icon="ui-icon-arrow-1-e" url="/users/showUsers.xhtml" />
                    <p:menuitem value="#{uimsg.admin_edit_users_title}" ajax="true"
                        icon="ui-icon-arrow-1-e" url="/users/editUser.xhtml"
                        disabled="#{auth.editUsers() == true ? false : true }" />
                </p:submenu>

                <!-- Role menu -->
                <p:submenu label="#{uimsg.roles_admin_title}">
                    <p:menuitem value="#{uimsg.admin_show_role_title}" ajax="true"
                        icon="ui-icon-arrow-1-e" url="/roles/showRoles.xhtml" />
                    <p:menuitem value="#{uimsg.admin_edit_role_title}" ajax="true"
                        icon="ui-icon-arrow-1-e" url="/roles/editRole.xhtml"
                        disabled="#{auth.editUsers() ne true}" />
                </p:submenu>
            </p:submenu>

            <p:separator />
            <!-- Sub-menu Version -->
            <p:submenu label="#{uimsg.abt_software_title}" styleClass="pageFont">
                <p:menuitem value="#{uimsg.abt_software_show_informations}"
                    icon="ui-icon-arrow-1-e" url="/version/showVersion.xhtml" ajax="true"/>
            </p:submenu>
</p:panelMenu>

menuItemをクリックするたびに、PanelMenuは非常に奇妙に動作し、予測できない動作をします。一部のサブメニューは折りたたまれ、その他は折りたたまれません。この「ジャビ・ジャバ」には決まったルールはないようです。

原因はわかりません。私は主にすべてのビューでリダイレクトを使用し( "faces-redirect = true")、一部のビューには複合要素が含まれています

誰かがヒントを持っていますか?

環境:

  • AS:JBoss7.1.1ファイナル
  • JSFバージョン:2.1.13
  • Primesfaces:3.4.1
4

2 に答える 2

6

primeFacesのpanelMenuは、その状態を保存して、以前に開いた/閉じたサブメニューを常にユーザーに表示できるようにする必要があります。PanelMenuは、パネルメニュー自体のIDを名前として持つCookieを使用して、クライアント側でその状態を保存します。Cookieは、JavaScriptを使用してクライアント側で設定/作成され( panelmenuについてはjsを参照)、Primefacesによって読み取られてメニューが更新されます。Cookieは、ユーザーが開いたサブメニュー項目のIDを保持するように設定されています。

問題の解決策は次のとおりです。

  1. ユーザー指定のIDを持つCookieのみが存在することを確認してください
  2. menu-item内のすべてのリクエストがすべて1つのアプリケーションディレクトリにのみ送信されることを確認してください
于 2012-12-13T15:24:04.190 に答える
0

あなたはそれを行うことができます、あなたはこれをコンポーネントに置く必要がありstateful="true" 、itemMenuでを設定しajax=false async=false global=false partialSubmit=false resetValue=false immediate=trueます。

それでおしまい。

于 2017-06-09T17:48:02.257 に答える