1.页面代码:单个集合循环生成一级和二级菜单
/* <c:forEach var="m" items="${list}" >
<c:if test="${m.mb.father eq \'-1\' }">
<input type="checkbox" value="${m.mb.id }"/>${m.mb.name }<br/>
<c:forEach var="l" items="${list}">
<c:if test="${m.mb.id==l.mb.father}">
<input type="checkbox" value="${l.mb.id }"/>${l.mb.name }<br/>
</c:if>
</c:forEach>
</c:if>
</c:forEach> */
/**
* 全选 点击一级菜单 全选二级菜单
* 重要思想 需要二级菜单有一个值表明当前二级菜单属于哪一个一级菜单
*
*/
function father(id){ //调用方法是传入当前菜单的id
var str = "child"+id; //二级菜单id
var father = document.getElementById("father"+id);//获取以及菜单id
var flag = father.checked;//判断以及菜单是否选中
var menus=document.getElementsByName("menuid");//获取所有菜单id
for(i=0;i<menus.length;++i){//遍历
var menu = menus[i];
if(menu.id==str){//判断 是否属于当前一级菜单的二级菜单
menu.checked=flag;//属于 一级选中 则二级选中
}
}
}
/**
* 点击二级菜单 一级菜单点选
* 重要思想: 假设二级菜单有兄弟菜单 取消或选中兄弟菜单不会对点选的一级菜单有所影响
*/
function son(id){ //传入当前二级菜单的一级菜单的id
var flag = false;//提供一个标识符
var father = "father"+id;//一级菜单的id
var child = "child" + id;//二级菜单 的id
var menus=document.getElementsByName("menuid"); //获取所有菜单信息 对菜单信息进行遍历
for(i=0;i<menus.length;++i){
var menu = menus[i];
if(menu.id==child){//判断是否有兄弟菜单 有兄弟菜单 进入判断
flag=true;
}
}
father = document.getElementById(father);//获取一级菜单id
father.checked=flag;//一级菜单选中
}
2.获取数据的servlet代码