惯例:
我是温浩然:
先说一下两种的区别,上图,改版之前。
后来的效果是:
很明显的,后来的是分组织结构显示的,这里用到的技术,就是C标签
先贴代码:
<c:forEach items="${babyStages}" var="PagebabyStage" varStatus="status"> <c:if test="${status.index%10==0}"> <li data-projectid="${PagebabyStage.stageId}" class="open"> <a href="#" class="dropdown-toggle"> <i class="icon-list"></i> <span class="menu-text">${status.index+1}---${status.index+10}</span> </a> <ul class="submenu" <c:if test="${pbstage.stageId==stageOne.stageId}">style="display: block;"</c:if> > <c:forEach items="${babyStages}" begin="${status.index}" end="${status.index+9}" var="pbstage" varStatus="cstatus"> <li class="category <c:if test="${pbstage.stageId==stageOne.stageId}">active</c:if> project" data-categoryid="${pbstage.stageId}"> <a href="<spring:url value='/card/showCard/${pbstage.stageId}'/>"> <i class="icon-double-angle-right"></i>${pbstage.name }</a> </li> </c:forEach> </ul> </li> </c:if> </c:forEach>
foreach中嵌套if其中再嵌套foreach。
后台传到前台的是babyStages这个list集合,在前台中,通过c:foreach来进行循环解析,
就会生出第一个图的效果。
如果想生出第二个图的效果,就是上面的代码了。
首先,需要循环产生这个列表,就是1-10,11-20,21-30……
用的是c:if进行判断。其中,用到了c:foreach中的 varStatus属性的index。这个属性,可以百度一下c:foreach。有详细介绍的,我给你推荐个网址:
http://luoke920.iteye.com/blog/258815
status.index是获取当前迭代从0开始的索引
然后回到我这里来。
然后说c:if
我这里用到的c:if是循环条件,是想生出整10 的列表。
所以,c:if中的条件就是
<c:if test="${status.index%10==0}">迭代从0开始,也就是第一次循环,因为是从0开始的,其实是第一个。是第1-到第10个
当第二次循环,就是从10 ,其实就是11开始。
然后,进入循环之后呢,再让他进行c:foreach循环,来生成下面的每一项
<c:forEach items="${babyStages}" begin="${status.index}" end="${status.index+9}" var="pbstage" varStatus="cstatus"> <li class="category <c:if test="${pbstage.stageId==stageOne.stageId}">active</c:if> project" data-categoryid="${pbstage.stageId}"> <a href="<spring:url value='/card/showCard/${pbstage.stageId}'/>"> <i class="icon-double-angle-right"></i>${pbstage.name }</a> </li> </c:forEach>这个循环,设置了循环的开始项和循环的结束项。
begin="${status.index}" end="${status.index+9}"当第一次进入for循环中,是从迭代为0,实际为1开始循环,到迭代为9,数据第10个。
第二次进入for循环,迭代10,数据11,到,迭代19,数据20.
这样来生成的。
这里的begin 和 end 是,c:foreach的属性。
刚开始的static.index,则是c:foreach中的 varStatus属性的属性。
不知道你们看懂了没,如果没看懂可以联系我,我QQ:1286238812,备注就写CSDN上看见的就行。我愿意与你共享我的经验。