Java 如何在appfuse中仅显示子菜单项
(无论如何,我认为这是来自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
菜单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