0

我正在我的网站上工作并尝试从数据库中打印出投资组合对象。我打印出来的页面有分页。

当使用以下标签时,我使用脚本创建新页面:

<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>
4

3 回答 3

1

实际上,您不需要那个计数器,因为 Struts2<s:iterator>标记status正好有这个属性。定义它,您可以在迭代器中使用它的各种属性。例如index,将返回从 0 开始的当前迭代计数。该first属性是布尔值,表示它是迭代中的第一个可用项。

顺便说一句,不要忘记关闭您的标签。

<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>
于 2013-07-26T18:22:42.820 回答
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>
于 2013-07-26T18:22:36.047 回答
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,以防它保持打开状态。

于 2013-07-26T18:21:45.397 回答