Java 菜单系统教程

Java 菜单系统教程,java,jsf,jsf-2,Java,Jsf,Jsf 2,亲爱的代码弯曲者。 我试图在核心JSF2.0中为一个简单的web应用程序创建一个菜单系统。我确实有不同的用户和不同的角色(管理员、用户、来宾等),我用JPA从数据库中加载这些角色。因此,我将尝试创建一个动态菜单系统,并将其粘贴在左对齐的面板中。我在网上搜索过类似的东西,但大多数时候我在RichFaces、PrimeFaces和其他非核心jsf中找到了示例 有人能告诉我一个方向吗?我可以从中获得在核心JSF2.0中构建菜单系统的基本原理(教程/示例) 你好,克里斯 考虑使用Ri饰相,但我想用核心J

亲爱的代码弯曲者。 我试图在核心JSF2.0中为一个简单的web应用程序创建一个菜单系统。我确实有不同的用户和不同的角色(管理员、用户、来宾等),我用JPA从数据库中加载这些角色。因此,我将尝试创建一个动态菜单系统,并将其粘贴在左对齐的面板中。我在网上搜索过类似的东西,但大多数时候我在RichFaces、PrimeFaces和其他非核心jsf中找到了示例

有人能告诉我一个方向吗?我可以从中获得在核心JSF2.0中构建菜单系统的基本原理(教程/示例)

你好,克里斯


考虑使用Ri饰相,但我想用核心JSF看看是否容易。

< P>菜单只是一组链接,通常链接在HTML代码> UL>
  • < /代码>。您可以使用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}
    

    菜单只是一组链接,通常以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没有一个树视图组件,以便于菜单构建。谢谢你的建议。