java - 在 JSTL 中捕获除零

标签 java jsp jstl

我试图使用 catch block 捕获以下 jSTL 循环除以零的结果,但我从来没有出现“不适用”,而是抛出“?%”。我正确显示了“等级”。如何显示“不适用”而不是“%”?

  <td style="text-align: center;">
    <c:set var="grade" value="${(G / (G + L + W + D + A + pc + dc + vc) * 100)}"/>
      <c:catch>
      <fmt:formatNumber value="${grade}" pattern="0" var="myInteger"/>
      <c:set var="passed" value="${myInteger - grade eq 0}"/>
      </c:catch>

       <c:if test="${passed}">
       <fmt:formatNumber minFractionDigits="2" maxFractionDigits="2"
                                          value="${grade}" />% 
       </c:if>

       <c:if test="${not passed}">
                        Not applicable
                    </c:if>
                </td>
            </tr>
        </c:forEach>

最佳答案

抛出算术异常的语句不在 JSTL 的 catch block 内(即使用如下逻辑):-

  <c:catch var="errorOccurred">
  <c:set var="grade" value="${(G / (G + L + W + D + A + pc + dc + vc) * 100)}"/>
  </c:catch>

 <c:choose>
 <c:when test="${errorOccurred != null}"> 
    Not applicable
</c:when> 
<c:otherwise> 
 <fmt:formatNumber value="${grade}" pattern="0" var="myInteger"/>
 <c:set var="passed" value="${myInteger - grade eq 0}"/>
    <c:choose>
        <c:when test="${passed}"> 
            <fmt:formatNumber minFractionDigits="2" maxFractionDigits="2"
                                      value="${grade}" />% 
        </c:when> 
        <c:otherwise> 
         Not applicable  
        </c:otherwise>
    </c:choose>
    </c:otherwise> 
    </c:choose>

关于java - 在 JSTL 中捕获除零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31979110/

相关文章:

JAVA_HOME 错误

java - 连接字符串和变量

java - 从jsp脚本调用lynx

java - 如何在 netui 数据转发器中使用 if 子句

java - 带循环的增量计数器

java - 列出当前正在执行的 SwingWorker 并停止它

java - Docker内存限制导致SLUB无法使用大页面缓存进行分配

java - 阻止用户返回 jsp 中的上一页

java - 如何使用displaytag过滤数据?

java - 一键选择所有相同的 jtable 值