菜单系统教程

时间:2011-05-03 15:02:06

标签: java jsf jsf-2

亲爱的代码弯曲者。 我正在尝试在核心JSF 2.0中为简单的Web应用程序做一个菜单系统。我确实有不同的用户具有不同的角色(管理员,用户,访客等),我从数据库加载JPA。因此,我将尝试创建一个动态的meny系统并将其粘贴在左对齐的面板中。我在网上搜索过这样的内容,但是大部分时间我在RichFaces,PrimeFaces和其他非核心jsf中找到了例子。

任何人都可以指点我的方向,我可以获得基础(教程/示例)的想法,在核心JSF 2.0中构建一个菜单系统吗?

问候克里斯

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

2 个答案:

答案 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。

我希望这条评论对你有帮助。

问候。