4

我正在尝试使用 JSP 页面开发 Spring MVC 应用程序,但遇到了问题。这更像是一个创造力问题而不是代码问题,但这里有:

所以应用程序基本上会收到一个配方(字段名称、问题描述、问题解决方案等),并在创建它时为其打上一个 ID。

我想要的是在首页上显示最后创建的 3 个食谱。我想出了一个代码,该代码显然显示了创建的3 个食谱:

<c:forEach var="recipe" items='${recipes}'>
    <c:if test="${recipe.id < 4}
        <div class="span4">
            <h3<c:out value="${recipe.inputDescProb}"></c:out></h3>
            <p><c:out value="${recipe.inputDescSol}"></c:out></p>
            <p><a class="btn" href="/recipes/${recipe.id}">Details &raquo</a></p>
        </div>
    </c:if>
</c:forEach>

关于如何显示创建的最后3 个食谱的任何想法?

4

3 回答 3

6

使用fn:length()EL 函数计算配方的总数。在我们使用任何之前,EL function我们还需要导入必要tag library的。

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

然后我们使用<c:set>将总计设置为页面范围的属性。

<c:set var="totalRecipes" value="${fn:length(recipes)}" />

<c:forEach>允许您使用其varStatus属性获取循环计数器。计数器的范围是循环本地的,它会自动为您递增。这loop counter从 1 开始计数。

<c:forEach var="recipe" items='${recipes}' varStatus="recipeCounter">
  <c:if test="${recipeCounter.count > (totalRecipes - 3)}">
    <div class="span4">
      <h3<c:out value="${recipe.inputDescProb}"></c:out></h3>
      <p><c:out value="${recipe.inputDescSol}"></c:out></p>
      <p><a class="btn" href="/recipes/${recipe.id}">Details &raquo;</a></p>
    </div>
  </c:if>
</c:forEach>

编辑:使用类的count属性LoopTagStatus来访问 EL 中迭代计数器的当前值${varStatusVar.count}

于 2013-04-28T14:15:01.590 回答
5

无需检查长度,只需使用变量的.last属性即可。varStatus

<c:forEach var="recipe" items="${recipes}" varStatus="status">
  <c:if test="${not status.last}">
    Last Item
  </c:if>
<c:forEach>

旁注,您还可以获得.firstand.count

于 2014-12-08T10:35:32.750 回答
1

您可以使用以下方法将当前计数与总集合大小进行比较${fn:length(recipes)}

<c:set var="total" value="${fn:length(recipes)}"/>


<c:forEach var="recipe" items='${recipes}' varStatus="status">
  <c:if test="${status.count > total - 3}">
    <div class="span4">
      <h3<c:out value="${recipe.inputDescProb}"></c:out></h3>
      <p><c:out value="${recipe.inputDescSol}"></c:out></p>
      <p><a class="btn" href="/recipes/${recipe.id}">Details &raquo</a></p>
    </div>
  </c:if>
</c:forEach>

编辑:

您需要先导入fn以使 JSTLfn可供使用:

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
于 2013-04-28T12:37:47.633 回答