首先数据库的结构是这样的
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
分享到:
相关推荐
首先,我们来看如何使用`iterator`标签遍历Map。在Java中,Map是一种键值对的数据结构,`iterator`标签可以通过`key`和`value`属性分别获取键和值。例如: ```jsp <%@ taglib prefix="s" uri="/struts-tags" %> ......
2. 遍历List<List<String>> 3. 遍历UserEntity 4. 遍历List<UserEntity> 遍历方法各有长短,若不是多表联接查询、显示表格的列数已经固定,一般用实体类(UserEntity)迭代的方式。相反,显示的数据表格行和列不确定...
本文将深入探讨如何使用Struts2中的`<s:iterator>`标签来遍历二维数组,并通过实例代码来具体说明其用法。 ### Struts2 Iterator标签 #### 1. 基本概念 `<s:iterator>`是Struts2的一个非常强大的标签,主要用于...
本文将深入探讨如何在JSP中将`List`, `Set`, `Map`等集合类型的数据传递到Action,然后再通过`<s:iterator>`标签进行遍历显示。这种方式对于数据的展示和交互具有重要的实践意义。 首先,我们需要了解Struts2的工作...
这样,当用户访问对应的URL时,Struts2会调用`MyAction`的`execute()`方法,填充Map数据,并将结果转发到`resultPage.jsp`,在那里使用`<s:iterator>`遍历并显示Map内容。 除了基本的遍历,Struts2还提供了丰富的...
在JSP页面中,使用Struts2的`iterator`标签遍历`timereportinfo_view`时,我们需要进行两层嵌套。外层`iterator`遍历`LinkedHashMap`的键值对,内层`iterator`则遍历每个日期对应的`List`。下面是如何正确使用`...
Iterator<Map.Entry<Integer, String>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<Integer, String> entry = iterator.next(); System.out.println("key=" + entry.getKey()...
在Struts2框架中,`<s:iterator>`标签是一个非常强大的工具,用于在JSP页面上循环遍历集合数据,如列表(List)、数组、Map等。它允许开发者以一种动态且灵活的方式展示来自后端的数据,从而极大地提高了开发效率和...
Map<String, String> emails = new HashMap<>(); emails.put("alice@example.com", "Alice"); emails.put("bob@example.com", "Bob"); Iterator<Map.Entry<String, String>> it = emails.entrySet().iterator(); ...
可以通过2种方法遍历HashMap<br><br>Map map = new HashMap();<br><br>for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) {<br><br> Map.Entry entry = (Map.Entry) iter.next();<br><br> Object ...
`<s:iterator>`是Struts2中的一个标签,用于迭代集合或者数组中的元素。在处理Map时,我们可以使用这个标签来迭代键值对,并在JSP页面上显示它们。 在描述中提到的"嵌套Map"是指Map的值本身还是另一个Map。这种结构...
在Struts2框架中,`<s:iterator>`标签是一个非常强大的工具,用于遍历集合或数组中的元素,尤其在处理列表数据时极为有用。通过本文档提供的代码示例,我们将深入探讨`<s:iterator>`标签的使用方法及其与不同数据...
通过以上分析可知,利用Struts2的`<s:iterator>`和`<s:set>`标签,我们可以很方便地实现对列表数据的迭代显示及数值求和功能。这种方法不仅简化了后端代码逻辑,也使得前端页面更加灵活和动态。这对于处理大量数据时...
该文档代码讲述了如何在jsp页面iterator遍历数组、Map、List集合
for (Iterator<Map.Entry<String, Student>> it = set.iterator(); it.hasNext();) { Map.Entry<String, Student> entry = (Map.Entry<String, Student>) it.next(); System.out.println(entry.getKey() + "--->...
这个例子中,我们使用嵌套的`s:iterator`标签来遍历数组中的每个元素。 4. **遍历学生列表**: ```jsp <table> <s:iterator value="listMap"> <tr> <td>Class:<s:property value="key"/></td> <td> <ul> <s:...
本文主要介绍了在 JSP 中使用自定义标签 Iterator 遍历 List,并对标签的实现过程进行了详细的解释。 标签的概念和作用 在 JSP 中,标签是一种特殊的组件,它可以根据需要执行不同的操作。自定义标签可以满足特定...
例如:<s:append id="myAppendIterator"> <s:param value="%{myList1}" /> <s:param value="%{myList2}" /> <s:param value="%{myList3}" /></s:append><s:iterator value="%{#myAppendIterator}"> <s:property /></...
#### 使用`s:iterator`标签遍历集合 `s:iterator`标签是Struts2中最常用的遍历集合的标签。它的主要属性包括: - **value**:指定要遍历的集合,可以是数组、列表或Map类型的对象。 - **id**:为每个遍历元素设置...
private String listToJSON(Map<String, String> uploadFileMap) { JSONObject json = new JSONObject(); Iterator<Map.Entry<String, String>> fileItr = uploadFileMap.entrySet().iterator(); Map.Entry...