Hi,
I've try out a simple version. I put the menu repository to application context
with key "struts-menu-repository", as velocity treats '.' as method or field
access, so key like "struts.menu.repository" doesn't work. And I also put a
permission adapter "permission-adapter" to request context. $msg and $link are
velocity struts tools.
The menu.vm file:
--------------------------------------------------------
#macro(setURL $menuItem)
#if($menuItem.components.size() > 0)
#foreach($subMenuItem in $menuItem.components)
#setURL($subMenuItem)
#end
#end
#if(!$menuItem.url)
#if($menuItem.page)
$menuItem.setUrl($link.setRelative($menuItem.page).toString())
#else
#if($menuItem.forward)
$menuItem.setUrl($link.setForward($menuItem.forward).toString())
#else
#if($menuItem.action)
$menuItem.setUrl($link.setAction($menuItem.action).toString())
#else
#if($menuItem.location)
$menuItem.setUrl($menuItem.location)
#else
#if($menuItem.components.size>0)
$menuItem.setUrl($menuItem.components.get(0).url) #end
#end
#end
#end
#end
#end
#end
#macro(displayMenu $menuItem $currentMenu)
#set ($title = $msg.get($menuItem.title))
#setURL($menuItem)
#set ($hasSub = $menuItem.components.size() > 0)
<li #if($hasSub)class="menubar" #end><a href="$!{menuItem.url}"
title="$title"#if($menuItem.target)target="$menuItem.target"#end
#if($menuItem.name.equals($currentMenu))class="current"#end>${title}</a>
#if ($hasSub)
<ul class="submenu">
#foreach($subMenuItem in $menuItem.components)
#displayMenu($subMenuItem $currentMenu)
#end
</ul>
#end
</li>
#end
<ul id="primary-nav" class="menuList">
#set($menu-keys = ["MainMenu","UserMenu","FileUpload","AdminMenu","Logout"])
#foreach($menu-key in $menu-keys)
#set($menu = $struts-menu-repository.getMenu($menu-key))
#if ($permission-adapter.isAllowed($menu))
#displayMenu($menu $currentMenu) ##set current menu in your page
#end
#end
</ul>
-----------------------------------------
David
在2007-06-17,"Matt Raible" <[EMAIL PROTECTED]> 写道:
The Menu Repository is stuffed into the ServletContext by Struts Menu, so you
should be able to grab it out and iterate through it. I've never tried it, but
I've heard of others doing this. You might also look at FreeMarker which is
similar to Velocity and allows JSP Tags. If you end up developing macros to
render the menus, let me know - I'd love to have this type of feature in Struts
Menu. Matt On 6/17/07, david <[EMAIL PROTECTED]> wrote: > Hi All, > > I am new
to struts-menu, I have a web site with velocity for view layer. Now > I want to
add struts-menu to it, can I use velocity but not JSP as > struts-menu's page
presentation? > > Thanks and regards, > > David > >
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
struts-menu-user mailing list
struts-menu-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/struts-menu-user