在c:forEach与s:iterator里面使用if标签判断当前位置是否为2的倍数
c:forEach:
<c:forEach var=”workflow” items=”${workflowList}”><tr<c:if test=”${workflowList.indexOf(workflow) % 2 == 0}”></c:if>><td><input type=”checkbox”value=”${workflow.workflowId}” /></td><td><ahref=”javascript:workflowAddorEdit(‘edit’,’${workflow.workflowId}’)”>${workflow.workflowName}</a></td></tr></c:forEach>如果是set集合的时候呢?indexOf还能用吗?indexOf的下标从0开始,为了给第一行数据加入class,,所以用了%2 == 0。
s:iterator:
<ul><li><input type=”checkbox”/> 栏目名称</li><s:if test=”catalogUserList.isEmpty()”><li>暂无相关数据</li></s:if><s:iterator value=”catalogUserList” status=”i”><li<s:if test=”#i.count%2 != 0″></s:if>><input type=”checkbox” value=”<s:property value=”#catalogUser.catalogUserId”/>”/> <s:property value=”#catalogUser.catalog.catalogFullName”/></li></s:iterator></ul>s:iterator显然封装的更好。
i.count 是从1开始的。
用s:if判断list是否为空
<s:if test=”catalogManageList.isEmpty()”>`<li>暂无相关数据</li></s:if>
在s:iterator之前使用,因为s:iterator本身会判断是不是空才进去干活。
即使是不成熟的尝试,也胜于胎死腹中的策略。