分析
- 每個菜單對象,有一個url屬性.對應着連接.
- 請求到action;根據請求的url,從數據得到菜單對象.
- 在網頁上輸出菜單對象對應的菜單鏈.
菜單對象的dao
//添加根據url查詢菜單的dao方法
public SystemMenu get(String url) {
Session session = sessionFactory.getCurrentSession();
Query query = session.createQuery("select o from SystemMenu o where o.url = :url");
query.setParameter("url",url);
List<SystemMenu> list = query.list();
if(list.size()==1) {
return list.get(0);
}
return null;
}
需要菜單鏈的列表的action
比如:Employee列表顯示,需要菜單鏈,
則在Employee的顯示列表的方法中,添加菜單對象.
public String execute() throws Exception {
//獲取菜單對象
currentMenu = systemMenuService.get(super.getUrl());
//獲取page對象
Page<List<Employee>> page = employeeService.list(query);
super.putContext("page", page);
return super.LIST;
}
//getUrl方法(獲取當前訪問的網址),寫在BaseAction中
public String getUrl() {
url = ServletActionContext.getRequest().getRequestURL().toString();
return url;
}
需要菜單鏈的列表的jsp
- 通過當前的菜單對象獲取其菜單集合
- 遍歷集合,每個對象中的url屬性,就是連接的href.
當前位置 : <s:a action="login_main">主頁</s:a>
<s:iterator value="currentMenu.allParents">
><a href="<s:property value="url"/>"><s:property value="name"/></a>
</s:iterator>