appfuse中的菜单(struts menu)

应用中集成struts menu有三种方式:
1 如果应用中使用了struts,可以把struts menu做为一个struts插件,如下:
<plug-in className="net.sf.navigator.menu.MenuPlugIn">
   <set-property property="menuConfig"
     value="/WEB-INF/menu- config.xml"/>
</plug-in>
2 在web.xml中配置监听器,如下:
<listener>
     <listener-class>net.sf.navigator.menu.MenuContextListener</listener-class>
</listener>
3 如果项目中使用到了spring,可以定义一个bean,如下:
<bean id="menu" class="net.sf.navigator.menu.MenuLoader">
  <property name="menuConfig">
    <value>/WEB-INF/menu-config.xml</value>
  </property>
</bean>
在appfuse中使用的是第二种方式.
然后在/WEB-INF/下定义了menu-config.xml文件,内容如下:
<MenuConfig>
    <Displayers>
        <Displayer name="CoolMenu" type="net.sf.navigator.displayer.CoolMenuDisplayer4"/>
        <Displayer name="ListMenu" type=" net.sf.navigator.displayer.ListMenuDisplayer"/>
    </Displayers>
    <Menus>
        <Menu name="MainMenu" title="mainMenu.title" page="/mainMenu.html" width="90"/>
        <Menu name="UserMenu" title="menu.user" description="User Menu"
page="/editProfile.html"/>
        <Menu name="FileUpload" title="menu.selectFile" description="File Upload"
page="/selectFile.html"/>
        <Menu name="AdminMenu" title="menu.admin" description="Admin Menu" roles="admin"
width="120">
            <Item name="ViewUsers" title="menu.admin.users" page="/users.html"/>
            <Item name="ReloadContext" title="menu.admin.reload " page="/reload.html"/>
            <Item name="FlushCache" title="menu.flushCache" page="/flushCache.html"
roles="admin"/>
            <Item name="Clickstream" title="menu.clickstream" page="/clickstreams.jsp"
roles="admin"/>
        </Menu>
    </Menus>
</MenuConfig>
Displayers中的displayer 定义了菜单的显示方式. CoolMenu和ListMenu.
Menus 下的Menu定义了具体的菜单.title是菜单的显示名字(是国际化配置文件中的key).page是与此菜单
项对应的url请求路径.roles表示显示此菜单用户应该具有的角色.上例表示只有admin这种角色的用户登
陆才会显示AdminMenu菜单.
在taglibs.jsp定义了struts menu 的tag:
<%@ taglib uri="
http://struts-menu.sf.net/tag-el " prefix="menu" %>
在menu.jsp中是tag的具体使用,如下:
<menu:useMenuDisplayer name="CoolMenu" permissions="rolesAdapter">
    <menu:displayMenu name="MainMenu"/>
    <menu:displayMenu name="UserMenu"/>
    <menu:displayMenu name="FileUpload"/>
    <menu:displayMenu name="AdminMenu"/>
</menu:useMenuDisplayer>
在这个菜单中,通过userMenuDisplayer 标签的name制定了菜单的显示样式是"CoolMenu".permissions指
定了菜单的显示与否是通过 role来决定的.(在前面的menu-config.xml中指定了AdminMenu菜单只有admin
角色的才显示).struts menu的 role permission 是通过request.isUserInRole来判断是否显示菜
单.appfuse使用了acegi security框架,在用户登陆的时候采用了acegi security的基于form 的认证方式
.在 acegi的org.acegisecurity.wrapper.SecurityContextHolderAwareRequestWrapper 类中有如下方法
:
public boolean isUserInRole(String role) {
        return isGranted(role);
    }
所以使用了它就可以完成这项工作,acegi security 提供了对struts menu的 role permission的支持. 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值