在数据的设计的时候经常会碰到在同一张表中通过在记录中添加如parentid字段关联本表中另一条记录,这种做法在实现多级分类时很有效,如产品类型表,最简单的表可以设计为 ID,NAME,PARENTID
1 服装 0 2 上衣 1 2 裤子 1
这种结构在JSP中可通过多重循环来实现分类显示,今天在项目中碰到了一个比较好的实现,记下来备忘,也分享给大家,希望大家有好的做法也可以贴出来,大家都可以看看。
<s:iterator value="struts中产生的list" var="_class" status="_rowstatus"> <!-- 显示顶级分类,这是我项目中的字段,需要根据自己需求修改 --> <s:if test="#_class.classType==2"> <li> <h3> ${_class.className } </h3> <!-- 遍历集合,找出此顶级分类下所有的子分类 --> <s:iterator value="classList.{?#this.classParentId==#_class.id}" var="class1" status="rowstatus">
<!-- 输出最后一个元素是不需要加分隔符 -->
<s:if test="#rowstatus.last"> <a href='#;' onclick="getProByClassId('${class1.id}');">${class1.className}</a> </s:if> <s:else> <a href='#;' onclick="getProByClassId('${class1.id}');">${class1.className}</a> | </s:else> </s:iterator> </li> </s:if> </s:iterator>
以上代码中比较好的实现是 classList.{?#this.classParentId==#_class.id} 这句形成了一个父级分类下所有子分类的集合。 大家如果有更好的做法希望能贴出来。。。
|