1. 程式人生 > >許可權之載入許可權資源

許可權之載入許可權資源

使用者登入成功進入如下的頁面:

 

主要是left.jsp許可權選單的載入

核心程式碼如下:

Jsp:

</head>
<bodystyle="margin: 0">
<divid="Menu">
 
<ulid="MenuUl">
 
<%--顯示一級選單 --%>
<s:iteratorvalue="#application.topPrivileges">
<s:iftest="#session.user.hasPrivilegeByName(name)">
<liclass="level1">
<divonClick="menuClick(this);" class="level1Style">
<imgsrc="style/images/MenuIcon/${id}.gif" class="Icon" />
${name}
</div>
<ulstyle="" class="MenuLevel2" id="aa">
<%--顯示二級選單 --%>
<s:iteratorvalue="children">
<s:iftest="#session.user.hasPrivilegeByName(name)">
<liclass="level2">
<divclass="level2Style">
<imgsrc="style/images/MenuIcon/${id}.gif" />
<atarget="right"href="${pageContext.request.contextPath}${url}.action">${name}</a>
</div>
</li>
</s:if>
</s:iterator>
</ul>
</li>
</s:if>
</s:iterator>
</ul>
</div>
</body>
 
<scripttype="text/javascript">
functionmenuClick(nemu){
$(nemu).next().toggle();
}
</script>

注意:

1. value="#application.topPrivileges",從全域性範圍內獲許可權資料(通過自定義InitListener,啟動tomact就放入到全域性快取中,因為這些許可權資源基本不變;講在《許可權之快取》講到)。

2.test="#session.user.hasPrivilegeByName(name)",校驗使用者是否存在,我們在實體裡添了該驗證方法

3.其中包含樹的知識。

User

/**
 * 根據名稱判斷使用者是否有訪問選單的許可權
 */
publicboolean hasPrivilegeByName(String name) {
//超級管理有所有的許可權
if(isAdmin()) {
returntrue;
}
ActionContext.getContext().getSession().get("user");
 
//普通使用者要判斷是否含有這個許可權
for(Role role : roles) {
for(Privilege priv : role.getPrivileges()) {
if(priv.getName().equals(name)) {
returntrue;
}
}
}
return false;
}
 

即可獲得上圖。

小結:

1.構建樹的思路就是簡單的<ul><li></li></ul>實現樹形結構的。

2.載入許可權選單思路就時從快取中查詢該使用者擁有的許可權,然後在迴圈匹配所有許可權,即可得到我們可操作的選單和按鈕。