弹簧菜单配置

时间:2015-02-19 09:13:35

标签: spring spring-mvc spring-security

我正在使用spring MVC 4并在我的主页中配置菜单,该菜单将根据我定义的角色显示。所以在我的menu-config.xml中,我定义为

<Menu name="Company" title="menu.companyTitle" page="/xxx/yyy/zzzz">
   <Item name="NewCompanyRequest" roles="ROLE_ADMIN,ROLE_USER" title="menu.NewCompanyRequest" page="/admin/companyRequestList" />
   <Item name="editCompanies" roles="ROLE_ADMIN" title="menu.editCompanies" page="/xx/yyy/ccc" />
</menu>
<Menu name="Exchaged" title="menu.admin.aboutCompany" page="/exchaged" roles="ROLE_ADMIN,ROLE_USER"/>  

表示以上项目名称 editCompanies 仅对ADMIN用户可见,并且工作正常,但在用户界面中,它会干扰下一个菜单已交换并引入一个。

我已经尝试了一些步骤但是没有找到解决办法。

1 个答案:

答案 0 :(得分:1)

首先,您为<Menu>标记使用了错误的结束标记。我已经纠正了它,你可以在代码下面看到它。

接下来,您无法在roles标记中添加<Item>属性。您必须在<Menu>标记中提供此属性。所以,您的菜单应如下所示:

<Menu name="Company" title="menu.companyTitle" page="#" roles="ROLE_ADMIN,ROLE_USER">
    <Item name="NewCompanyRequest"  title="menu.NewCompanyRequest" page="/admin/companyRequestList" />
    <Item name="editCompanies" title="menu.editCompanies" page="/xx/yyy/ccc" />
</Menu> ...

或如下所示:

<Menu name="Company" title="menu.companyTitle" page="/xxx/yyy/zzzz" roles="ROLE_ADMIN">
    <Item name="NewCompanyRequest"  title="menu.NewCompanyRequest" page="/admin/companyRequestList" />
    <Item name="editCompanies" title="menu.editCompanies" page="/xx/yyy/ccc" />
</Menu> ...

或者您可以将下拉菜单设置为单独的菜单,并提供单独的角色权限,如下所示:

<Menu name="NewCompanyRequest" roles="ROLE_ADMIN,ROLE_USER" title="menu.NewCompanyRequest" page="/admin/companyRequestList" />
<Menu name="editCompanies" roles="ROLE_ADMIN" title="menu.editCompanies" page="/xx/yyy/ccc" />