Java 菜单系统教程
亲爱的代码弯曲者。 我试图在核心JSF2.0中为一个简单的web应用程序创建一个菜单系统。我确实有不同的用户和不同的角色(管理员、用户、来宾等),我用JPA从数据库中加载这些角色。因此,我将尝试创建一个动态菜单系统,并将其粘贴在左对齐的面板中。我在网上搜索过类似的东西,但大多数时候我在RichFaces、PrimeFaces和其他非核心jsf中找到了示例 有人能告诉我一个方向吗?我可以从中获得在核心JSF2.0中构建菜单系统的基本原理(教程/示例) 你好,克里斯Java 菜单系统教程,java,jsf,jsf-2,Java,Jsf,Jsf 2,亲爱的代码弯曲者。 我试图在核心JSF2.0中为一个简单的web应用程序创建一个菜单系统。我确实有不同的用户和不同的角色(管理员、用户、来宾等),我用JPA从数据库中加载这些角色。因此,我将尝试创建一个动态菜单系统,并将其粘贴在左对齐的面板中。我在网上搜索过类似的东西,但大多数时候我在RichFaces、PrimeFaces和其他非核心jsf中找到了示例 有人能告诉我一个方向吗?我可以从中获得在核心JSF2.0中构建菜单系统的基本原理(教程/示例) 你好,克里斯 考虑使用Ri饰相,但我想用核心J
考虑使用Ri饰相,但我想用核心JSF看看是否容易。
< P>菜单只是一组链接,通常链接在HTML代码> UL><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组件库不包含支持迭代/显示树结构的组件。很多第三方组件库都有一种
组件
您还可以自己创建一个不呈现任何标记的自定义树迭代器组件。下面是一个视图面外观的开始示例:
<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>
#{item.name}
-
菜单只是一组链接,通常以HTML的形式出现。您可以使用CSS给它一个漂亮的外观,但这不是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组件库不包含支持迭代/显示树结构的组件。很多第三方组件库都有一种
组件
您还可以自己创建一个不呈现任何标记的自定义树迭代器组件。下面是一个视图面外观的开始示例:
<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>
#{item.name}
-
如果您没有从JSF2组件中获得足够的满足感,也许您应该实现一个第三方组件,这并不意味着您必须将您的解决方案与这些组件耦合,也许您可以尝试额外的一层来插入JSF UI中的任何组件。另一方面,primefaces和icefaces的最新版本具有带JSF2的本机实现,您不必担心开发额外的东西来插入它们的组件。您可以有一个带有primefaces的菜单树,其余的页面可以使用纯JSF2。您只需要托管bean和JSF2API的其他经典组件。顺便说一下,这也可以通过自带JSF2的facelets实现
我希望这个评论对你有所帮助
注意。如果您没有从JSF2组件中获得足够的满足感,也许您应该实现一个第三方组件,这并不意味着您必须将您的解决方案与这些组件耦合,也许您可以尝试额外的一层来插入JSF UI中的任何组件。另一方面,primefaces和icefaces的最新版本具有带JSF2的本机实现,您不必担心开发额外的东西来插入它们的组件。您可以有一个带有primefaces的菜单树,其余的页面可以使用纯JSF2。您只需要托管bean和JSF2API的其他经典组件。顺便说一下,这也可以通过自带JSF2的facelets实现
我希望这个评论对你有所帮助
问候。谢谢,很抱歉重播太晚。所以我想我必须决定是否需要嵌套菜单(树)。如果我需要实现一个可折叠的左菜单面板。我想,我可以在核心JSF中使用JS和图标。有点奇怪的是,核心JSF2.0没有一个树视图组件,以便于菜单构建。感谢您的模式建议。感谢并抱歉延迟重播。所以我想我必须决定是否需要嵌套菜单(树)。如果我需要实现一个可折叠的左菜单面板。我想,我可以在核心JSF中使用JS和图标。有点奇怪的是,核心JSF2.0没有一个树视图组件,以便于菜单构建。谢谢你的建议。