Java 如何在appfuse中仅显示子菜单项

Java 如何在appfuse中仅显示子菜单项,java,jsp,appfuse,Java,Jsp,Appfuse,(无论如何,我认为这是来自appfuse。我并不总是清楚哪个框架是什么。) 我的菜单config.xml中有这个: <?xml version="1.0" encoding="UTF-8"?> <MenuConfig> <Displayers> <Displayer name="Velocity" type="net.sf.navigator.displayer.VelocityMenuDisplayer"/> &l

(无论如何,我认为这是来自appfuse。我并不总是清楚哪个框架是什么。)

我的
菜单config.xml中有这个:

<?xml version="1.0" encoding="UTF-8"?>
<MenuConfig>
    <Displayers>
        <Displayer name="Velocity" type="net.sf.navigator.displayer.VelocityMenuDisplayer"/>
    </Displayers>
    <Menus>
        <Menu name="MainMenu" title="mainMenu.title" page="/mainmenu">
            <Item name="Foo" title="menu.foo" page="/foo"/>
            <Item name="Bar" title="menu.bar" page="/bar"/>
            <Item name="Baz" title="menu.baz" page="/baz"/>
        </Menu>
        <Menu name="OtherMenu" title="otherMenu.title" page="/othermenu">
            <Item name="Squee" title="menu.squee" page="/squee"/>
            <Item name="Lorem" title="menu.lorem" page="/lorem"/>
        </Menu>
        <Menu name="UserMenu" title="menu.user" description="User Menu" page="mainmenu.editprofile" roles="ROLE_ADMIN,ROLE_USER"/>
        <Menu name="Logout" title="user.logout" page="/logout" roles="ROLE_ADMIN,ROLE_USER"/>
    </Menus>
</MenuConfig>

对于我的主导航,我在menu.jsp中有以下内容:

<%@ include file="/common/taglibs.jsp"%>

<menu:useMenuDisplayer name="Velocity" config="cssHorizontalMenu.vm" permissions="rolesAdapter">
<ul class="tabs menuList">
    <menu:displayMenu name="MainMenu"/>
</ul>
</menu:useMenuDisplayer>

这非常有效,除了我在输出中同时获得主菜单的顶层和子项。我实际上只想要子项,即:

<ul>
  <li>Foo</li>
  <li>Bar</li>
  <li>Baz</li>
</ul>
  • 酒吧
  • 巴兹
不是

  • 主菜单
    • 酒吧
    • 巴兹

有什么办法吗?

这么晚了,但我希望能对某人有所帮助

您是否需要查看cssHorizontalMenu.vm,它负责生成HTML输出。如果你有一个.vm

也许你有这样的想法:

#macro( displayCssMenu $menu )
  #if ($displayer.isAllowed($menu))
    #set ($count = $count + 1)
    ## set menu title
    #set ($title = $displayer.getMessage($menu.title))
    #if (!$menu.url) #set ($url="javascript:void(0)") #else #set ($url=$menu.url) #end

    ## create a single menu item
    #set ($itemClass = "")
    #if (!$menu.parent)
        #set ($itemClass = "mainItem")
    #end
    #set ($img = "")
    #if ($menu.image)
        #set ($img = "<img alt='$menu.image' class='icon setImageMenu $menu.image'/>")
    #end
    #if ($menu.components.size() == 0)
        #if ($count == $renderedChildren)
          <li class="last">
        #else
          <li>
        #end
        #if ($menu.name == $currentMenu)
          <a href="$url" title="$title" class="current $itemClass" #if($menu.target)target="$menu.target" #end#if($menu.width)style="width: ${menu.width}px"#end>$img ${title}</a>
        #else
          <a href="$url" title="$title" class="$itemClass" #if($menu.target)target="$menu.target" #end#if($menu.width)style="width: ${menu.width}px"#end>$img ${title}</a>
        #end
    #else ## create multiple menu items in a menu
        #if ($menu.components.size() > 0)
            #set ($hasViewableChildren = false)
            #set ($renderedChildren = 0)
            #foreach ($menuIt in $menu.components)
                #if ($displayer.isAllowed($menuIt))
                    #set($hasViewableChildren = true)
                    #set($renderedChildren = $renderedChildren + 1)
                #end
            #end
        #end

        <li#if ($hasViewableChildren) class="menubar"#end>
          <a href="$url" title="$title" #if ($menu.name == $currentMenu) class="current $itemClass" #else class="$itemClass" #end#if($menu.target)target="$menu.target" #end#if($menu.width)style="width: ${menu.width}px"#end>$img ${title}</a>
    #end

    #if ($menu.components.size() > 0)
        #if ($hasViewableChildren) 
          <ul> 
        #end

        #set ($count = 0)
        #foreach ($menuIt in $menu.components)
            #displayCssMenu($menuIt)
        #end

        #if ($hasViewableChildren && ($count == $renderedChildren))
          </li>
        #else
          </ul>
          #if ($count > $renderedChildren) 
          </li>
          #end
        #end
    #else
      </li>
      #if ($count == $menu.parent.components.size())
      </ul>
      #end
    #end
  #end
#end

#displayCssMenu($menu)
#宏(显示CSSMENU$菜单)
#如果($displayer.isAllowed($menu))
#设置($count=$count+1)
##设置菜单标题
#set($title=$displayer.getMessage($menu.title))
#if(!$menu.url)#set($url=“javascript:void(0)”)#else#set($url=$menu.url)#结束
##创建单个菜单项
#set($itemClass=”“)
#如果(!$menu.parent)
#设置($itemClass=“mainItem”)
#结束
#设置($img=”“)
#if($menu.image)
#设置($img=”“)
#结束
#如果($menu.components.size()==0)
#如果($count==$renderdchildren)
  • #否则
  • #结束 #如果($menu.name==$currentMenu) #否则 #结束 #else##在菜单中创建多个菜单项 #如果($menu.components.size()>0) #设置($hasViewableChildren=false) #设置($renderdchildren=0) #foreach($menuIt in$menu.components中的menuIt) #如果($displayer.isAllowed($menuIt)) #设置($hasViewableChildren=true) #设置($renderdchildren=$renderdchildren+1) #结束 #结束 #结束 #结束 #如果($menu.components.size()>0) #如果($hasViewableChildren)
      #结束 #设置($count=0) #foreach($menuIt in$menu.components中的menuIt) #displayCssMenu($menuIt) #结束 #如果($hasViewableChildren&($count==$renderedChildren)) #否则
    #如果($count>$renderdchildren)
  • #结束 #结束 #否则 #如果($count==$menu.parent.components.size()) #结束 #结束 #结束 #结束 #displayCssMenu($menu)
    然后你可以试着这样做。。。(查找#if($menu.parent)

    #如果($menu.components.size()==0&&$menu.parent)
    #如果($count==$renderdchildren)
    
  • #否则
  • #结束 布拉。。布拉。。。 布拉。。布拉。。。 #结束 #如果($menu.components.size()>0) #如果($hasViewableChildren)
      #结束 布拉。。布拉。。。 #否则 #if($menu.parent) #结束 #如果($count==$menu.parent.components.size())
    #结束 #结束

  • 这会阻止打印父菜单的LIA元素,并且只打印items元素…

    这么晚了,但我希望能对某人有所帮助

    您是否需要查看cssHorizontalMenu.vm,它负责生成HTML输出。如果你有一个.vm

    也许你有这样的想法:

    #macro( displayCssMenu $menu )
      #if ($displayer.isAllowed($menu))
        #set ($count = $count + 1)
        ## set menu title
        #set ($title = $displayer.getMessage($menu.title))
        #if (!$menu.url) #set ($url="javascript:void(0)") #else #set ($url=$menu.url) #end
    
        ## create a single menu item
        #set ($itemClass = "")
        #if (!$menu.parent)
            #set ($itemClass = "mainItem")
        #end
        #set ($img = "")
        #if ($menu.image)
            #set ($img = "<img alt='$menu.image' class='icon setImageMenu $menu.image'/>")
        #end
        #if ($menu.components.size() == 0)
            #if ($count == $renderedChildren)
              <li class="last">
            #else
              <li>
            #end
            #if ($menu.name == $currentMenu)
              <a href="$url" title="$title" class="current $itemClass" #if($menu.target)target="$menu.target" #end#if($menu.width)style="width: ${menu.width}px"#end>$img ${title}</a>
            #else
              <a href="$url" title="$title" class="$itemClass" #if($menu.target)target="$menu.target" #end#if($menu.width)style="width: ${menu.width}px"#end>$img ${title}</a>
            #end
        #else ## create multiple menu items in a menu
            #if ($menu.components.size() > 0)
                #set ($hasViewableChildren = false)
                #set ($renderedChildren = 0)
                #foreach ($menuIt in $menu.components)
                    #if ($displayer.isAllowed($menuIt))
                        #set($hasViewableChildren = true)
                        #set($renderedChildren = $renderedChildren + 1)
                    #end
                #end
            #end
    
            <li#if ($hasViewableChildren) class="menubar"#end>
              <a href="$url" title="$title" #if ($menu.name == $currentMenu) class="current $itemClass" #else class="$itemClass" #end#if($menu.target)target="$menu.target" #end#if($menu.width)style="width: ${menu.width}px"#end>$img ${title}</a>
        #end
    
        #if ($menu.components.size() > 0)
            #if ($hasViewableChildren) 
              <ul> 
            #end
    
            #set ($count = 0)
            #foreach ($menuIt in $menu.components)
                #displayCssMenu($menuIt)
            #end
    
            #if ($hasViewableChildren && ($count == $renderedChildren))
              </li>
            #else
              </ul>
              #if ($count > $renderedChildren) 
              </li>
              #end
            #end
        #else
          </li>
          #if ($count == $menu.parent.components.size())
          </ul>
          #end
        #end
      #end
    #end
    
    #displayCssMenu($menu)
    
    #宏(显示CSSMENU$菜单)
    #如果($displayer.isAllowed($menu))
    #设置($count=$count+1)
    ##设置菜单标题
    #set($title=$displayer.getMessage($menu.title))
    #if(!$menu.url)#set($url=“javascript:void(0)”)#else#set($url=$menu.url)#结束
    ##创建单个菜单项
    #set($itemClass=”“)
    #如果(!$menu.parent)
    #设置($itemClass=“mainItem”)
    #结束
    #设置($img=”“)
    #if($menu.image)
    #设置($img=”“)
    #结束
    #如果($menu.components.size()==0)
    #如果($count==$renderdchildren)
    
  • #否则
  • #结束 #如果($menu.name==$currentMenu) #否则 #结束 #else##在菜单中创建多个菜单项 #如果($menu.components.size()>0) #设置($hasViewableChildren=false) #设置($renderdchildren=0) #foreach($menuIt in$menu.components中的menuIt) #如果($displayer.isAllowed($menuIt)) #设置($hasViewableChildren=true) #设置($renderdchildren=$renderdchildren+1) #结束 #结束 #结束 #结束 #如果($menu.components.size()>0) #如果($hasViewableChildren)
      #结束 #设置($count=0) #foreach($menuIt in$menu.components中的menuIt) #displayCssMenu($menuIt) #结束 #如果($hasViewableChildren&($count==$renderedChildren)) #否则
    #如果($count>$renderdchildren)
  • #结束 #结束 #否则 #如果($count==$menu.parent.components.size()) #结束 #结束 #结束 #结束 #displayCssMenu($menu)
    然后你可以试着这样做。。。(查找#if($menu.parent)

    #如果($menu.components.size()==0&&$menu.parent)
    #如果($count==$renderdchildren)
    
  • #否则
  • #结束 布拉。。布拉。。。 布拉。。布拉。。。 #结束 #如果($menu.components.size()>0) #如果($hasView
    #if ($menu.components.size() == 0 && $menu.parent)
            #if ($count == $renderedChildren)
              <li class="last">
            #else
              <li>
            #end
            bla.. bla...
    
            bla.. bla...
        #end
    
        #if ($menu.components.size() > 0)
            #if ($hasViewableChildren) 
              <ul> 
            #end
    
            bla.. bla...
        #else
            #if ($menu.parent)
                 </li>
            #end
          #if ($count == $menu.parent.components.size())
              </ul>
          #end
        #end