我正在尝试使用catch块通过以下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>
您引发Arithematic Exception的语句不在JSTL的catch块内(即,如下所示的使用逻辑):
<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>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句