2010-09-10 82 views
1

(我认为这是从AppFuse的到来,无论如何,我并不总是对什么是其框架的组成部分依然清晰。)如何显示只是在子菜单项的appfuse

我在得到这个我menu-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> 

这几乎工程,但我得到两个顶层和孩子的物品在我的主菜单中tput的。其实我只是想中的子项,即:

<ul> 
    <li>Foo</li> 
    <li>Bar</li> 
    <li>Baz</li> 
</ul> 

<ul> 
    <li>Main Menu</li> 
    <li> 
    <ul> 
     <li>Foo</li> 
     <li>Bar</li> 
     <li>Baz</li> 
    </ul> 
    </li> 
</ul> 

是否有某种方式来做到这一点?

回答

1

这么晚了,但我希望能帮助到别人......

你需要考虑你的cssHorizo​​ntalMenu.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) 

那么你可以尝试做到这一点...(寻找#如果($ menu.parent)

#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 

这防止打印父菜单中的李A元素,只打印的项目元素......