2011-05-03 84 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。

我希望这个评论能帮到你。

问候。