Appfuse的权限控制依赖于Struts的Menu机制,common下的menu.jsp是对菜单顺序的定义,详细的菜单项和菜单链接及权限再menu-config.xml中控制,如下:

<Menu name="Logout" title="user.logout" page="/logout" roles="ROLE_ADMIN,ROLE_USER,ROLE_PRODUCT" />

roles中的值即是role表中的name,给那个角色分配菜单的权限,则把角色的name加入到菜单定义的roles中即可。

但使用过程中会发现,这样定义好之后菜单出来是乱的,源自appfuse中的一个Bug,修改文件navbarMenu.vm即可,如下:

 1 #macro( displayNavbarMenu $menu $count)
 2   #if ($displayer.isAllowed($menu))
 3     #set ($count = $count + 1)
 4     ## set menu title
 5     #set ($title = $displayer.getMessage($menu.title))
 6     #if (!$menu.url) #set ($url="javascript:void(0)") #else #set ($url=$menu.url) #end
 7 
 8     ## create a single menu item
 9     #if ($menu.components.size() == 0)
10         <li class="#if ($menu.name == $currentMenu)active#end">
11         <a href="$url" title="$title" #if($menu.target)target="$menu.target" #end#if($menu.width)style="width: ${menu.width}px"#end>${title}</a>
12     #else ## create multiple menu items in a menu
13         #if ($menu.components.size() > 0)
14             #set ($hasViewableChildren = false)
15             #set ($renderedChildren = 0)
16             #foreach ($menuIt in $menu.components)
17                 #if ($displayer.isAllowed($menuIt))
18                     #set($hasViewableChildren = true)
19                     #set($renderedChildren = $renderedChildren + 1)
20                 #end
21             #end
22         #end
23 
24         <li#if ($hasViewableChildren) class="dropdown#if ($menu.name == $currentMenu) active#end"#end>
25           <a href="#" title="$title"
26              #if($menu.target)target="$menu.target" #end
27              #if($menu.width)style="width: ${menu.width}px"#end
28              class="dropdown-toggle" data-toggle="dropdown">${title}</a>
29     #end
30 
31     #if ($menu.components.size() > 0)
32         #if ($hasViewableChildren)
33           <ul class="dropdown-menu">
34         #end
35 
36         #set ($count = 0)
37         #foreach ($menuIt in $menu.components)
38             #displayNavbarMenu($menuIt, $count)
39         #end
40 
41         #if ($hasViewableChildren && ($count == $renderedChildren))
42           </ul></li>
43         #else
44           </ul>
45           #if ($count > $renderedChildren)
46           </li>
47           #end
48         #end
49     #else
50       </li>
51       #if ($menu.parent && $count == $menu.parent.components.size())
52       ##</ul>
53       #end
54     #end
55   #end
56 #end
57 
58 #displayNavbarMenu($menu, 0)
navbarMenu.vm

相关文章:

  • 2022-01-07
  • 2022-01-08
  • 2021-08-21
  • 2021-06-13
  • 2021-07-08
  • 2021-08-04
猜你喜欢
  • 2021-05-13
  • 2022-02-26
  • 2022-12-23
相关资源
相似解决方案