0
<p:panelMenu>
            <p:submenu label="Articoli">
                <p:menuitem value="Anagrafica" action="/articoli/anagrafica" icon="ui-icon-document" ajax="false" />
                <p:menuitem value="Importazione" action="/articoli/importazione" ajax="false" />
                <p:menuitem value="Marchi" action="/articoli/marchi" ajax="false" />
            </p:submenu>
            <p:submenu label="Clienti">
                <p:menuitem value="Anagrafica" action="/clienti/anagrafica" ajax="false" />
            </p:submenu>
            <p:submenu label="Vendite" icon="ui-icon-suitcase">
                <p:menuitem value="Point Of Sale" action="/vendite/pos" ajax="false" />
            </p:submenu>
            <p:submenu label="Utilita" icon="ui-icon-calculator">
                <p:menuitem value="TestPDF" action="#{menuController.getTestPdf()}" ajax="false" />
            </p:submenu>
        </p:panelMenu>

このメニューは完全に表示されますが、少しナビゲーションすると、予期しない動作をします。

つまり、各サブメニューの開いた状態と閉じた状態を制御できないため、各メニュー項目のクリックとページの読み込み時に、ランダムに展開/折りたたまれます。

少し検索したところ、panelMenuはサブメニューの状態を保存するためにクライアントCookieを使用していることがわかりましたが、....すべてを自動的に管理することになっているのではないでしょうか。

各サブメニューの状態を手動で制御するにはどうすればよいですか?

4

1 に答える 1

0

p:accordionPanel の activeIndex 属性を使用してこの動作を手動で制御することはできません。

しかし、私は同じ問題に直面しており、stackoverflow でこの質問を見つけました: Primefaces 3.4 p:panelMenu: cannot control the state of p:submenu and p:menuitem

結論は、同じアプリケーション ディレクトリ内のページに対して panelMenu が同じ状態になるということです。ページをより洗練されたフォルダー構造にすると、現在のすべてのページを「疑似ページ」にラップし、これらの疑似ページを同じフォルダーに配置することしかできません。

したがって、次のような疑似ページが作成されます。

<h:html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
</h:head>
<h:body>
  <ui:composition>
    <ui:include src="/actualPagesDirectory/actualPage.xhtml" />
  </ui:composition>
</h:body>
</h:html>

あまりいいものではありませんが、これまでのところ、primefaces panelMenu をそのまま使用する唯一の解決策です。

編集:私の結論は間違っていました。このような疑似ページを使用しても、動作は変わりません。したがって、動作を制御することはまだノーです。

さらに、この問題は既知であり、今後対処されるというヒントを見つけまし

于 2013-02-07T16:35:30.067 に答える