如何在通过JSTl的forEach标记访问时比较该值

时间:2014-07-16 06:33:38

标签: java compare jstl

  <c:forEach var="healthp" items="${healthparam}" >
  <tr>
 <td><c:out value="${healthp.name}"/></td>
 <td><c:out value="${healthp.current_Reading}"/></td>
 <td><c:out value="${healthp.target}"/></td>
 <td><c:out value="${healthp.measurementunit}"/></td>
 <td><c:out value="${healthp.target}"/></td>
 <td><c:out value="${healthp.recorddate}"/></td>  
  </tr>
 </c:forEach>

在此我想比较Current_Reading和目标。 如果当前读数具有更高的值,那么我只想在该(Current_Reading)列中显示,否则我想在目标列上显示它。 任何帮助表示赞赏

3 个答案:

答案 0 :(得分:3)

您可以使用c:if标记。如果我理解正确并且您想隐藏current_Reading或target中的值(以较低者为准),那么它可能如下所示:

  <td><c:out value="${healthp.name}"/></td>
  <td>
    <c:if test="${healthp.current_Reading > healthp.target}">
      <c:out value="${healthp.current_Reading}"/>
    </c:if>
  </td>
  <td><c:out value="${healthp.target}"/></td>
  <td><c:out value="${healthp.measurementunit}"/></td>
  <td>
    <c:if test="${healthp.current_Reading <= healthp.target}">
      <c:out value="${healthp.target}"/>
    </c:if>
  </td>
  <td><c:out value="${healthp.recorddate}"/></td>

这将为您留下一个空列,如果这是您正在寻找的内容。

答案 1 :(得分:1)

使用表达式语言时可以使用eq以及ne,lt等。

<c:if test="${var1 eq var2}">some code</c:if>

答案 2 :(得分:0)

我相信这种技术正是你所寻求的。 “三元”运算符是一种在单列中显示两个值中较高值的简洁方法:

<c:forEach var="healthp" items="${healthparam}" >
<tr>
    <td><c:out value="${healthp.name}"/></td>
    <td><c:out value="${healthp.current_Reading > healthp.target ? healthp.current_Reading : healthp.target}"/></td>
    <td><c:out value="${healthp.measurementunit}"/></td>
    <td><c:out value="${healthp.target}"/></td>
    <td><c:out value="${healthp.recorddate}"/></td>  
</tr>
</c:forEach>

附注:大多数现代JSP实现不再需要c:out,因此您可以通过这样做使代码更具可读性:

<c:forEach var="healthp" items="${healthparam}">
<tr>
    <td>${healthp.name}</td>
    <td>${healthp.current_Reading > healthp.target ? healthp.current_Reading : healthp.target}</td>
    <td>${healthp.measurementunit}</td>
    <td>${healthp.target}</td>
    <td>${healthp.recorddate}</td>  
</tr>
</c:forEach>