2011-05-03 109 views
1

尊敬的代碼彎曲者。 我正在嘗試在一個簡單的Web應用程序的核心JSF 2.0中做菜單系統。我確實有不同的角色(admin,user,guest等),我從數據庫中加載了JPA。所以我會嘗試創建一個動態的meny-system並將其粘貼在左對齊的面板中。我在網上搜索了這樣的內容,但是大部分時間我都在RichFaces,PrimeFaces和其他不是核心的jsf中找到示例。菜單系統教程

任何人都可以指點我的方向,我可以得到的基礎(教程/例子)的想法,建立在覈心JSF 2.0菜單系統?

問候克里斯

PS。考慮使用RichFaces,但我想看看核心jsf是否容易。

回答

4

菜單只是一堆鏈接,它們通常在HTML <ul><li>中。你可以使用CSS給它一個很好的look'n'feel,但這不是JSF的責任。

如果它是一個平面列表,只是做

<ul> 
    <ui:repeat value="#{menu.list}" var="item"> 
     <ui:fragment rendered="#{item.accepts(user.roles)}"> 
      <li><a href="#{item.url}">#{item.name}</a></li> 
     </ui:fragment> 
    </ui:repeat> 
</ul> 

如果它是一棵樹,那麼你真的需要前往一個第三方組件庫,因爲標準的JSF組件庫不包含支持iteratin組件/顯示一個樹結構。很多第三方組件庫都有一種<xx:tree>組件。

您也可以自己創建一個自定義樹迭代器組件,它不會呈現任何標記。這裏是觀方怎麼能看起來像一個開球例如:

<xx:tree value="#{menu.tree}" var="item"> 
    <xx:treeNode level="0"> 
     <xx:treeNodeItem rendered="#{item.accepts(user.roles)}"> 
      <h3>#{item.name}</h3> 
      <xx:insertTreeNodeChildren /> 
     </xx:treeNodeItem> 
    </xx:treeNode> 
    <xx:treeNode> 
     <ul> 
      <xx:treeNodeItem rendered="#{item.accepts(user.roles)}"> 
       <li> 
        <a href="#{item.url}">#{item.name}</a> 
        <xx:insertTreeNodeChildren /> 
       </li> 
      </xx:treeNodeItem> 
     </ul> 
    </xx:treeNode> 
</xx:tree> 
+0

非常感謝您對最近的重播。所以我想我必須決定是否需要嵌套菜單(樹)或不。如果我需要實現可摺疊的左側菜單面板。我猜,我可以用JS和核心JSF中的圖標來做什麼。有點奇怪的是,核心JSF 2.0沒有樹視圖組件,以便於菜單構建。感謝您的模式建議。 – Chris 2011-05-04 06:34:27

1

如果你沒有得到JSF2成分不夠滿意,也許你應該實現一個第三方組件,這並不意味着你必須要對夫婦您解決方案提供這些組件,也許你可以嘗試一個額外的層來插入JSF UI中的任何組件。另一方面,最新版本的primefaces和icefaces具有原生實現的JSF2,你不必擔心開發額外的東西來插入他們的組件。你可以有一個菜單樹白色的primefaces,其餘的頁面在純JSF2中。只有您需要託管bean和JSF2 API的其他經典組件。順便說一句,這可以實現太白衣來自本機的JSF2。

我希望這個評論能幫到你。

問候。