首先:从list开始。
每次在action中查询或者获取的值都要存放list中,为了方便每次都建立一个对象,这样可能造成项目的臃肿。对于简单的遍历我们可以尝试:
list<String> 后台直接复制就可以:
前台遍历时:<s:iterator value="list" var="tempList">
<s:property value="#tempList"/>
</s:iterator>
直接用var中的值,因为list<String>中没有名字
下面来说一下list<Map<String,String>>形式。相信有些特殊情况是要用到这种形式的,那么多层循环我们要这么解决呢?
- <s:iterator id="map" value="resultList" status="state">
- <s:iterator value="resultList[#state.index]">
- Key : <s:property value="key" />
- Value : <s:property value="value" />
- </s:iterator>
- </s:iterator>
这样俩层循环就可以搞定,注意value="resultList" 如果取值取不到的话,请加上 value="#request.resultList"
这样就能获取到你想要遍历的值了。
list部分就到这里了,大家如果有疑问可以留言。
下面Map部分
首先普通Map<String,String>
<s:iterator value="#request.map"> <s:property value="key"/> <s:property value="value"/> </s:iterator>
这样是不很清晰:下面来点有难度的:Map<String,List<TypeInfo>>
首先TypeInfo结构式这样的:
1.类型ID typeId
2.类型名称 typeName
3.父类型ID parentsId
<s:iterator var="classificationroot" value="classifications['0']"> <li class="onefl"> <ul id="javabc"> <s:propertyvalue="#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> </s:iterator>
第一个iterator是遍历根节点
第二个iterator是遍历属于该根节点的子节点
classifications Map对象的名称 classifications['0']去得key值是0的那个value就是所以根节点List 并遍历它去得根节点的typeId的值,然后通过第二个iterator遍历属于该根节点的子节点。
注意:第二个iterator的value属性value="classifications[#classificationroot.classificationId]" 的取值方式.