在數(shù)據(jù)的設(shè)計的時候經(jīng)常會碰到在同一張表中通過在記錄中添加如parentid字段關(guān)聯(lián)本表中另一條記錄,這種做法在實現(xiàn)多級分類時很有效,如產(chǎn)品類型表,最簡單的表可以設(shè)計為 ID,NAME,PARENTID
1 服裝 0 2 上衣 1 2 褲子 1
這種結(jié)構(gòu)在JSP中可通過多重循環(huán)來實現(xiàn)分類顯示,今天在項目中碰到了一個比較好的實現(xiàn),記下來備忘,也分享給大家,希望大家有好的做法也可以貼出來,大家都可以看看。
<s:iterator value="struts中產(chǎn)生的list" var="_class" status="_rowstatus"> <!-- 顯示頂級分類,這是我項目中的字段,需要根據(jù)自己需求修改 --> <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>
以上代碼中比較好的實現(xiàn)是 classList.{?#this.classParentId==#_class.id} 這句形成了一個父級分類下所有子分類的集合。 大家如果有更好的做法希望能貼出來。。。
|