如果给定类别中的产品少于5个,我试图告诉我的程序在每个产品上打印一条消息。但是当我在浏览器中测试条件时,当我点击一个类别时(即使该类别有超过5个prods。),该页面变为空白,并且日志标记以下错误:
java.lang.IllegalArgumentException:无法转换{[entity.Product [id = 36],entity.Product [id = 37],entity.Product [id = 38],entity.Product [id = 39],entity类型为org.eclipse.persistence.indirection.IndirectList的.Product [id = 160]]}类java.lang.Long
我认为c:if
条件存在问题。
<c:set var="product" value="${categoryProducts}"/>
<c:if test="${categoryProducts > 5}">
<div id="pd_msg">SALE!</div>
</c:if>
答案 0 :(得分:3)
试试这个:
<c:set var="product" value="${categoryProducts}"/>
<c:if test="${categoryProducts.size() > 5}">
<div id="pd_msg">SALE!</div>
</c:if>
Exception告诉您,您正在尝试将List(左侧)与Long(右侧)进行比较。 但是你只能比较相同类型的对象,这就是为什么你需要首先调用size(),这将给你 列表中的项目总数。
答案 1 :(得分:0)
@BadK建议的解决方案很好,但是如果它不适合你,就像它不适合我,下面的代码对我有用:
<c:if test="${fn:length(categoryProducts) < 5}">
<div id="pd_msg">SALE!</div>
</c:if>
此解决方案可在此处找到:Evaluate if list is empty JSTL