递归显示无限级 导航菜单
菜单的实体
package com.fenjin.bank.model;
import java.util.HashSet;
import java.util.Set;
/**
* Menu entity. @author MyEclipse Persistence Tools
*/
public class Menu implements java.io.Serializable {
// Fields
/**
*
*/
private static final long serialVersionUID = -6930624483390675234L;
private Integer id;
private Menu menu;
private String name;
private Integer sortId;
private String urlPath;
public String getUrlPath() {
return urlPath;
}
public void setUrlPath(String urlPath) {
this.urlPath = urlPath;
}
private Set<Menu> menus = new HashSet<Menu>(0);
// Constructors
/** default constructor */
public Menu() {
}
/** full constructor */
public Menu(Menu menu, String name, Set<Menu> menus,int sortId) {
this.menu = menu;
this.name = name;
this.menus = menus;
this.sortId=sortId;
}
// Property accessors
public Integer getSortId() {
return sortId;
}
public void setSortId(Integer sortId) {
this.sortId = sortId;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public Menu getMenu() {
return this.menu;
}
public void setMenu(Menu menu) {
this.menu = menu;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public Set<Menu> getMenus() {
return this.menus;
}
public void setMenus(Set<Menu> menus) {
this.menus = menus;
}
}
菜单的hbm文件
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.fenjin.bank.model.Menu" table="menu" catalog="bank">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<many-to-one name="menu" class="com.fenjin.bank.model.Menu" fetch="select">
<column name="pid" />
</many-to-one>
<property name="urlPath" type="java.lang.String">
<column name="urlPath" length="1000" />
</property>
<property name="name" type="java.lang.String">
<column name="name" length="400" />
</property>
<property name="sortId" type="java.lang.Integer">
<column name="sortId" />
</property>
<set name="menus" inverse="true">
<key>
<column name="pid" />
</key>
<one-to-many class="com.fenjin.bank.model.Menu" />
</set>
</class>
</hibernate-mapping>
action层部门代码
public void getMenuHtml(int id,int level){
StringBuffer strPre = new StringBuffer("");
for(int i=0; i<level; i++) {
strPre.append("----");
}
menuList=service.findByPid(id);
for(Menu m:menuList){
sb.append("<li> <a href='#'>");
sb.append(m.getName()+m.getId());
sb.append("</a>"+"\n");
System.out.println(strPre+m.getName()+m.getId());
if(service.findByPid(m.getId()).size()>0){
sb.append("<ul>"+"\n");
getMenuHtml(m.getId(),level+1);
sb.append("</ul>"+"\n");
}
}
}
public String execute() throws Exception {
sb.append("<head>"
+ "<script type='text/javascript' src='jss/jquery.js'></script>"
+ "<script type='text/javascript' src='jss/jquery.dimensions.js'></script>"
+ "<script type='text/javascript' src='jss/jquery.positionBy.js'></script>"
+ "<script type='text/javascript' src='jss/jquery.jdMenu.js'></script>"
+ "<link rel='stylesheet' href='css/jquery.jdMenu.css' type='text/css' />"
+ "</head>"
+ "<body>");
sb.append("<div style='border: 1px solid blue; '> <ul class='jd_menu jd_menu_slate'>"+"\n");
getMenuHtml(0,0);
sb.append("</ul> </div>");
sb.append("</body> </html>");
System.out.println(sb.toString());
response.getWriter().print(sb.toString());
return null;
}
前台 ajax 加载
<script type="text/javascript">
$(document).ready(function() {
$("#lanmu-body").load("listMenu");
});
</script>
补充:综合编程 , 其他综合 ,