本例子实现一个 从数据库中加载多级菜单的例子
数据库设计如下:
CREATE TABLE `menu` (
`id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '编号',
`name` VARCHAR(250) NULL DEFAULT '0' COMMENT '菜单名称',
`parent` INT(10) NULL DEFAULT '0' COMMENT '父菜单',
`href` VARCHAR(500) NULL DEFAULT '0' COMMENT '菜单链接',
`about` VARCHAR(500) NULL DEFAULT '0' COMMENT '描述',
PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
其中 最重要的 就是 parent 列,这个指定了 该菜单的父菜单选项。
服务器处理时,将所有的菜单信息读取出来,放入 name 为 menus 的session 中。
在 jsp 页面上 多重循环去除值实现:
<!--1级分类开始-->
<!--判断 如果 parent =0 的话,即是 一级分类-->
<s:iterator value="#attr.menus.{?#this.parent==0}" id="c2">
<div >
<h3>
[
一级菜单:<s:property value="#c2.name"/>
]
</h3>
<ul >
<!--2级分类开始--><!--迭代判断 如果 当前 节点的 parent 等于上一个节点的id 即 该节点为上 节点的子目录-->
<s:iterator value="#attr.menus.{?#this.parent==#c2.id}" id="c3">
<li>
二级菜单:<s:property value="#c3.name"/>
</li>
</s:iterator>
<!--2级分类结束-->
</ul>
</div>
<!--1级分类结束-->
</s:iterator>
如果 还有下一级目录的话,再嵌套一次循环即可。
最终效果如下:
[ 一级菜单:课程概要 ]
二级菜单:课程负责人
二级菜单:课程介绍
二级菜单:课程特色
二级菜单:政策措施
二级菜单:辐射共享
二级菜单:建设规划
二级菜单:教学大纲
二级菜单:教学条件
二级菜单:教学内容
二级菜单:教学方法与手段
二级菜单:课程考核
二级菜单:教学日历
二级菜单:教学效果
二级菜单:成果介绍
二级菜单:参考文献
二级菜单:制定教材
[ 一级菜单:模块资源 ]
二级菜单:第一章节
二级菜单:第二章节
二级菜单:第三章节
二级菜单:第四章节
二级菜单:第五章节
二级菜单:第六章节
二级菜单:第七章节
二级菜单:绪论
[ 一级菜单:拓展资源 ]
二级菜单:实验指导
二级菜单:案例库
二级菜单:试题库
二级菜单:演示实验
二级菜单:仿真实验
二级菜单:专题讲座库
二级菜单:专业知识检索系统
二级菜单:素材资源库
二级菜单:辅助工具
二级菜单:网络资源
二级菜单:常见问题
[ 一级菜单:课程团队 ]
二级菜单:团队负责人
二级菜单:团队成员
二级菜单:团队结构
二级菜单:教改项目
二级菜单:科研项目
二级菜单:发表论文
二级菜单:成果与奖励
二级菜单:主编教材
[ 一级菜单:教学互动 ]
[ 一级菜单:作业系统 ]
二级菜单:查看本期作业
二级菜单:查看已提交作业
二级菜单:学生提交作业
二级菜单:发布作业
二级菜单:查看所有作业
[ 一级菜单:测试系统 ]
[ 一级菜单:常见问题 ]