应用Struts2的iterator标签嵌套遍历Map>
使用Struts2的iterator标签嵌套遍历Map<String,List<TypeInfo>>
首先数据库的结构是这样的
1.类型ID typeId
2.类型名称 typeName
3.父类型ID parentsId
相当与一个树所以树根的parentsId都为0
属于该树根下的节点的parentsId都为该树的typeId
所以我从数据库查询出的结果放到Map里的结构是这样的
首先从数据库查询出来所以的树的根节点(就是parentsId等于0的)放到List中
然后把该List放入Map中键为“0”也就是parentsId列的值
接着遍历该List拿到每个根节点的typeId到数据库中查询属于根节点的子节点
并把属于该根节点的子节点保存到List中然后在把List保存的Map中键值是该子节点的parentsId值
页面遍历方式是:
第一个iterator是遍历根节点
第二个iterator是遍历属于该根节点的子节点
classifications Map对象的名称 classifications['0']去得key值是0的那个value就是所以根节点List 并遍历它去得根节点的typeId的值,然后通过第二个iterator遍历属于该根节点的子节点。
注意:第二个iterator的value属性value="classifications[#classificationroot.classificationId]" 的取值方式
引自:http://hi.baidu.com/%BB%A8%BB%F0%C8%D5%BC%C7/blog/item/2dd6da165f85a216962b433b.html
首先数据库的结构是这样的
1.类型ID typeId
2.类型名称 typeName
3.父类型ID parentsId
相当与一个树所以树根的parentsId都为0
属于该树根下的节点的parentsId都为该树的typeId
所以我从数据库查询出的结果放到Map里的结构是这样的
首先从数据库查询出来所以的树的根节点(就是parentsId等于0的)放到List中
然后把该List放入Map中键为“0”也就是parentsId列的值
接着遍历该List拿到每个根节点的typeId到数据库中查询属于根节点的子节点
并把属于该根节点的子节点保存到List中然后在把List保存的Map中键值是该子节点的parentsId值
页面遍历方式是:
<ul class="wzfl"> <li class="onefl"><a href="#"><span><strong>全部文章(123)</strong></span></a></li> <s:iterator var="classificationroot" value="classifications['0']"> <li class="onefl"> <a href="javaScript:flkz('javabc<s:property value="#classificationroot.classificationId"/>')"><span><strong><s:property value="#classificationroot.typesName"/>(90)</strong></span></a> <ul id="javabc<s:property value="#classificationroot.classificationId"/>"> <s:iterator var="classification" value="classifications[#classificationroot.classificationId]"> <li class="twofl"><a href="#"><span><s:property value="#classification.typesName"/></span></a></li> </s:iterator> </ul> </li> </s:iterator> </ul> <ul class="wzfl"> <li class="onefl"><a href="#"><span><strong>全部文章(123)</strong></span></a></li> <s:iterator var="classificationroot" value="classifications['0']"> <li class="onefl"> <a href="javaScript:flkz('javabc<s:property value="#classificationroot.classificationId"/>')"><span><strong><s:property value="#classificationroot.typesName"/>(90)</strong></span></a> <ul id="javabc<s:property value="#classificationroot.classificationId"/>"> <s:iterator var="classification" value="classifications[#classificationroot.classificationId]"> <li class="twofl"><a href="#"><span><s:property value="#classification.typesName"/></span></a></li> </s:iterator> </ul> </li> </s:iterator> </ul>
第一个iterator是遍历根节点
第二个iterator是遍历属于该根节点的子节点
classifications Map对象的名称 classifications['0']去得key值是0的那个value就是所以根节点List 并遍历它去得根节点的typeId的值,然后通过第二个iterator遍历属于该根节点的子节点。
注意:第二个iterator的value属性value="classifications[#classificationroot.classificationId]" 的取值方式
引自:http://hi.baidu.com/%BB%A8%BB%F0%C8%D5%BC%C7/blog/item/2dd6da165f85a216962b433b.html