2013-01-01 71 views
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> 

此菜單顯示完美,但稍微導航後,其行爲將以不可預知的方式進行。Primefaces面板菜單錯誤?

我的意思是我無法控制每個子菜單的狀態打開/關閉,因此,在每個菜單項點擊和頁面加載時,它們被展開/摺疊隨機

經過一番搜索後,我發現panelMenu使用客戶端cookie來保存子菜單的狀態,但....是不是應該自動管理所有這些?

我該怎麼做手動控制每個子菜單的狀態?

回答

0

您不能手動控制此行爲,因爲您可以使用p:accordionPanel的activeIndex屬性來執行此操作。

但我面臨同樣的問題,我發現這個問題上的計算器: Primefaces 3.4 p:panelMenu: unable to 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,因爲它是。

編輯:我的結論是不正確的。擁有這樣的僞頁面不會改變行爲。所以對於控制行爲仍然是一個不行。

此外,我發現了一個暗示對這個問題是已知的,將得到解決: Primefaces forum 但我仍無法找到這個問題在primefaces 3.5.CR1解決。