sql
CREATE TABLE `t_category` ( `cid` char(32) NOT NULL, `cname` varchar(50) DEFAULT NULL, `pid` char(32) DEFAULT NULL, `desc` varchar(100) DEFAULT NULL, `orderBy` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`cid`), UNIQUE KEY `cname` (`cname`), KEY `FK_t_category_t_category` (`pid`), KEY `orderBy` (`orderBy`), CONSTRAINT `FK_t_category_t_category` FOREIGN KEY (`pid`) REFERENCES `t_category` (`cid`) ) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=utf8;
Dao
public List<Category> findAll() throws SQLException { /* * 1. 查詢出所有一級分類 */ String sql = "select * from t_category where pid is null order by orderBy"; List<Map<String,Object>> mapList = qr.query(sql, new MapListHandler()); List<Category> parents = toCategoryList(mapList); /* * 2. 循環遍歷所有的一級分類,為每個一級分類加載它的二級分類 */ for(Category parent : parents) { // 查詢出當前父分類的所有子分類 List<Category> children = findByParent(parent.getCid()); // 設置給父分類 parent.setChildren(children); } return parents; }
left.jsp
Q6MenuBar組件顯示手風琴式下拉菜單
<script language="javascript"> $(function() { .... <c:forEach items="${parents}" var="parent"> <c:forEach items="${parent.children}" var="child"> bar.add("${parent.cname}", "${child.cname}", "/goods/BookServlet?method=findByCategory&cid=${child.cid}", "body"); </c:forEach> </c:forEach> }); </script>