我正在我的网站上工作并尝试从数据库中打印出投资组合对象。我打印出来的页面有分页。
当使用以下标记时,我使用脚本创建新页面:
<div class="pics">
...
</div>
最多只能有8个锚标签进入上面的div。锚标签不是什么特别的,它们确实使用<s:property>
标签,但这就是它。
为了实现此功能,我尝试了以下内容:
<c:set var="counter" value="0"/>
<s:iterator value="allPortfolio">
<c:if test="${(counter mod 8) == 0}">
<div class="pics">
</c:if>
<a href="<s:property value="filename">">Download</a>
<c:if test="${(counter mod 8) == 0}">
</div>
</c:if>
<c:set var="counter" value="${counter+1}"/>
</s:iterator>
但是,此代码创建了11个页面(我的数据库中每个项目组合对象1个)。它应该只创建2页,第一页有8个项目,第二页有剩余的3个。
换句话说,应该只有2个
<div class="pics">
...
</div>
一个有8个锚标签,一个有3个锚标签。
相反,这是在页面加载后创建的代码:
<div class="pics">
<a href="1ba918625bca57f6e059c2d05393010b04da5ed6.png">Download</a>
</div>
<a href="ec49d4ca243a481b7fa819dfea783e0dd8f5a431.jpg">Download</a>
<a href="1b4ab5a3bebdf88045ef3818e852185c86e33048.png">Download</a>
<a href="e12eaed32a97bb78ddd863696ca510d943c4d978.png">Download</a>
<a href="2b6ee029b3fcef21b0a220a6b14de16206ce588b.png">Download</a>
<a href="e3e94e7ac6bfb09ca012d30912525848f2d361ed.png">Download</a>
<a href="f07e24b31fb65e38aa3d4bbe97a24a71c281aae7.png">Download</a>
<a href="dd41b536ca45642fa9827311498b9480d6df9be8.png">Download</a>
<div class="pics">
<a href="a2ad0d4b73daa3311e9f9b16dcd7d9476cd6e748.png">Download</a>
</div>
<a href="45fa47125a5dfe3608d6d80fb0a9ba1f5c444264.png">Download</a>
<a href="ee9b1571aa22e935772792ac363cc95e2a77bdfd.png">Download</a>
答案 0 :(得分:1)
实际上你不需要那个计数器,因为Struts2 <s:iterator>
标签具有status
属性。定义它,你可以在迭代器中使用它的各种属性。例如,index
将返回从0开始的当前迭代计数。first
属性是boolean,表示它是迭代中的第一个可用项。
BTW别忘了关闭你的标签。
<s:iterator value="allPortfolio" status="stat">
<s:if test="#stat.first">
<div class="pics">
</s:if>
<s:if test="!#stat.first && #stat.index % 8 == 0">
</div>
<div class="pics">
</s:if>
<a href="<s:property value="filename"/>">Download</a>
<s:if test="#stat.last">
</div>
</s:if>
</s:iterator>
答案 1 :(得分:0)
使用8的模数意味着每8个链接将被8整除,余数为0。这不是解决问题的方法。
你想要使用类似的东西:
<c:set var="counter" value="0" />
<s:iterator value="allPortfolio">
<c:if test="${counter gt 7}">
<c:set var="counter" value="0" />
</c:if>
<c:if test="${counter eq 0}">
<div class="pics">
</c:if>
<a href="<s:property value="filename">">Download</a>
<c:if test="${counter eq 7}">
</div>
</c:if>
<c:set var="counter" value="${counter+1}" />
</s:iterator>
<c:if test="{counter ne 8}">
</div>
</c:if>
最后一位用于关闭最后一个div,以防它被打开。
答案 2 :(得分:0)
试试此代码
<s:set var="countdown" value="0"/>
<s:iterator value="allPortfolio" status="status">
<s:if test="#status.index % 8 == 0">
<div class="pics">
<s:set var="countdown" value="7"/>
</s:if>
<a href="<s:url value='%{filename}'/>">Download</a>
<s:if test="#countdown == 0 || #status.last">
</div>
</s:if>
<s:set var="countdown" value="%{#countdown-1}"/>
</s:iterator>