<c:forEach>标签关联集合循环嵌套问题
最近,在项目中用到<c:forEach>标签在jsp页面做信息展示,关于<c:forEach>各种属性意义这里就不多说了,这里介绍一下我遇到的循环嵌套问题。
说一下功能需求,需要在页面中展现一个附件列表,然后对于每一个附件都可以再次点击打开该附件上传的文件列表,可以下载,在线查看等。首先我们将页面所需要的附件和文件数据封装起来传到前台页面:
List<FCompanyFilesEntity> filesList=this.fSalesmanOrderService.getCompanyFiles(Integer.valueOf(orderid)); String fileBaseUrl=Global.getResource("file.baseurl"); request.setAttribute("fileslist",filesList); request.setAttribute("attachmentlist", resultJson.getObj());
这里的fileslist存储的是整个附件列表数据,attachmentlist是一个Map<String,List<Map<String,Object>>>数据类型的数据。
前台jsp页面我用<c:forEach>标签展现数据是这样的:
<c:forEach items="${fileslist}" var="fileitem" step="1" varStatus="status" > <div class="panel panel-default"> <div class="panel-heading" role="tab" id="heading${fileitem.id}"> <h4 class="panel-title"> <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion1" href="#collapse${fileitem.id}" aria-expanded="false" aria-controls="collapse${fileitem.id}"> ${fileitem.filename} </a> </h4> </div> <div id="collapse${fileitem.id}" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading${fileitem.id}"> <div class="panel-body"> <ul class="tup ace-thumbnails_b" id="${fileitem.filekey}"> <c:forEach items="${attachmentlist["${fileitem.filekey}"]}" var="financeFile" step="1" varStatus="status"> <li> <span class="name" ><a title="${financeFile.title}" class="cboxElement" data-rel="colorbox_a" href="${fileBaseUrl}/${financeFile.realpath}">${financeFile.title}</a></span> <a href="commonController.do?viewFile&fileid=${financeFile.id}&subclassname=com.haocheok.finance.salesman.entity.FSalesmanFilesEntity&setFlag=1" title="下载">下载</a> <a title="${financeFile.title} ${financeFile.gpslocation}" class="cboxElement" data-rel="colorbox_b" href="${fileBaseUrl}/${financeFile.realpath}" >查看</a> </li> </c:forEach> </ul> </div> </div> </div> </c:forEach>首先外层对附件filelist进行循环展示,内层循坏用filelist的元素的一个filekey属性作为文件列表Map的key值,取出文件list进行循环。
照理来说,这里的逻辑没有任何问题,我试验的好几次都不行。
最后,我查找了一个jsp标签库和一些资料,找到了<c:set>标签,修改是这样的:
<c:set value="${fileitem.filekey}" var="filekey" /> <c:forEach items="${attachmentlist["filekey"]}" var="financeFile" step="1" varStatus="status">
(我都怀疑是我数据结构封装的有问题呢。>_<)
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: <c:forEach>嵌套<c:forEach>
- 下一篇: JSP标签c:forEach实例