我正在尝试使用一个表来显示一些图像,我每行允许3个图像,但是当我有一个少于3个图像的行时,我不知道如何结束表行。请参阅下面的代码段,了解我一直在尝试的内容。
使用ul
我不必担心它,但我被指示使用表格。如何确保最后一行正确终止?我是jstl的新手。
谢谢,
<% int endTRFlag = 0; %>
<table width="100%">
<tr>
<core:forEach var="imageURL" items="${actionBean.imageURLs}" varStatus="rowCounter">
<td align="center" valign="middle">
<div class="item">
<a href="#"><img src="${imageURL}" alt="Photo 1" class="img" /></a>
</div>
</td>
<% endTRFlag = 1; %>
<core:if test="${ (rowCounter.count % 3 == 0) }">
</tr>
<tr>
<% endTRFlag = 0; %>
</core:if>
<core:if test="${ (rowCounter.count % 3 != 0) && (endTRFlag == 0)}">
</tr>
</core:if>
</core:forEach>
答案 0 :(得分:2)
在下面的代码中,我使用.index
而不是.count
,因为它基于0,因此对模数(0 / 3,3 / 3等)更有效。如果当前元素是列表中的最后一个元素,则.last
为true
。这个解决方案确实导致Eclipse中的验证错误(至少是Ganymede),这很烦人。
<c:forEach var="imageURL" items="${actionBean.imageURLs}" varStatus="rowCounter">
<c:if test="${rowCounter.index mod 3 eq 0}">
<tr>
</c:if>
<td>stuff</td>
<c:if test="${(rowCounter.index+1) mod 3 eq 0 or rowCounter.last}">
</tr>
</c:if>
</c:forEach>
答案 1 :(得分:-1)
只需将</tr>
放在循环之后。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<c:set var="imageCnt" value="${fn:length(actionBean.imageURLs)}"/>
<table width="100%">
<tr>
<c:forEach var="imageURL" items="${actionBean.imageURLs}"
varStatus="rowCounter">
<td align="center" valign="middle">
<span class="item">
<a href="#"><img src="${imageURL}" alt="Photo 1" class="img" /></a>
</span>
</td>
</c:forEach>
<c:forEach begin="${imageCnt}" end="2">
<td/>
</c:forEach>
</tr>
</table>