亲爱的代码弯曲者。 我正在尝试在核心JSF 2.0中为简单的Web应用程序做一个菜单系统。我确实有不同的用户具有不同的角色(管理员,用户,访客等),我从数据库加载JPA。因此,我将尝试创建一个动态的meny系统并将其粘贴在左对齐的面板中。我在网上搜索过这样的内容,但是大部分时间我在RichFaces,PrimeFaces和其他非核心jsf中找到了例子。
任何人都可以指点我的方向,我可以获得基础(教程/示例)的想法,在核心JSF 2.0中构建一个菜单系统吗?
问候克里斯
PS。考虑使用RichFaces,但我想看看核心jsf是否容易。
答案 0 :(得分: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>
答案 1 :(得分:1)
如果你没有从JSF2组件获得足够的满意度,也许你应该实现第三方组件,这并不意味着你必须将你的解决方案与这些组件结合起来,也许你可以尝试额外的层来插入任何组件在您的JSF UI中。另一方面,最新版本的primefaces和icefaces具有原生实现的JSF2,你不必担心开发额外的东西来插入他们的组件。你可以有一个菜单树whit whitfaces,其余的你的页面是纯JSF2。只有您需要的是托管bean和JSF2 API的其他经典组件。顺便说一句,这可以实现过本身的JSF2本身的facelets。
我希望这条评论对你有帮助。
问候。