如何检查 int 变量是否不等于 jstl 中的字符串



我有一个"大小"存储在数据库中,其值可以9, M or null。当我<c:when>使用条件提取jstl中的数据并比较它是否不等于字符串null时,我收到此错误:

Cannot convert null of type class java.lang.String to class java.lang.Long

我用来比较值的代码:

<c:choose>
    <c:when test="${product.productBeanSize ne 'null'}">
        <td>${product.productBeanSize}</td>
    </c:when>
    <c:otherwise>
        <td></td>
    </c:otherwise>
</c:choose> 
目前

尚不清楚"null"是否作为字符串存储在数据库中,或者它是否仅指示一个未增值的值。

在后一种情况下,只需检查:

<c:if test="${not empty product.productBeanSize}">
    <td>${product.productBeanSize}</td>
</c:if>
<c:if test="${empty product.productBeanSize}">
    <td></td>
</c:if>

否则(但为什么你应该保存"null"字符串,只需让列不增值)你可以尝试用<c:catch>来检查值是否是数字。例:

<c:set var="size" value="${product.productBeanSize}" />
<c:catch var="isNumber">
   <c:set var="size" value="${size * 1}" />
</c:catch>

如果isNumber == null则您有一个数值,否则是一个字符串值。

最新更新