2010-09-10 81 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元素,只打印的項目元素......