2011-07-05 150 views
1

我有用作菜單樹,所以每個節點都可以點擊並打開另一個* .xhtml文件。該樹將顯示在每個包含模板的* .xhtml文件中。摺疊號碼:樹

問題:樹倒塌,如果重定向到一個* .xhtml文件。令人驚訝的是,選定的節點保持選中狀態(它被選中時着色)。樹不應該崩潰!

樹生成動態的,但它僅產生一次。

測試與Primefaces 2.2.1和3.0.M2

我怎樣才能解決這個問題?在primefaces展示這個作品。

我的代碼:

<h:form id="formTreeStudents"> 
    <p:tree id="treeGroups" 
     value="#{studentTree.root}" 
     var="node" 
     cache="true" 
     selectionMode="single" 
     nodeSelectListener="#{studentTree.onNodeSelect}" 
     selection="#{studentrTree.selectedNode}" 
     onselectComplete="ajaxDialog.show();" 
     update="statusbar userbar"> 
     <p:treeNode> 
     <h:outputText value="#{node.treeString}" styleClass="treeNodeParent"/> 
     </p:treeNode> 
    </p:tree> 
    <p:ajax event="load" onstart="ajaxDialog.hide();"/> 
</h:form> 

的bakingBean是sessionScoped。它的getter和setter類似於primefaces showcase和一個監聽函數的例子。

@ManagedBean 
@SessionScoped 
public class StudentTree implements Serializable{ 
... 
    public void onNodeSelect(NodeSelectEvent event) { 
    ... 
    } 
} 

回答

1

解決了它。

它與Primefaces 3.0.M2。我的圖書館或緩存的數據有問題。 使用3.0.M2必須做一些修改。

FE:

nodeSelectListener="#{studentTree.onNodeSelect}" 

現在被替換

<p:ajax event="select" listener="#{studentTree.onNodeSelect}"/> 
2

樹節點保持選中狀態,因爲託管bean的屬性#{studentrTree.selectedNode}有一個值。

你的管理bean是@SessionScoped,因此將生活在會話您導航離開並返回到頁面後還是一樣。如果你將其更改爲@ViewScoped,則託管bean就會從頁面導航離開時死去,當您瀏覽回到頁面屬性selectedNode將再次成爲它的默認值。

+0

也許我的問題是不夠清楚;),所以現在我知道爲什麼節點保持選定狀態,但爲什麼樹倒塌,即使會話範圍?它不應該那樣做。 – Ziagl