请问,SpringBoot + JSP中用c:foreach 遍历集合,使用了begin end 来取得 0 到 2 之间的内容,正常有内容没事,但是一旦没有内容集合为空,就会整个页面报错。
怎么避免集合为空时的报错呢?
“Devil组”引证GPT后的撰写:
用c:forEach标签遍历集合时,如果集合为空,会出现NoSuchElementException异常。为了避免这种情况的发生,可以在使用c:forEach标签之前,先判断集合是否为空。如果集合为空,可以给集合赋一个空的ArrayList对象,这样即使集合为空,也不会出现异常。
例如,在使用c:forEach标签之前,可以添加如下判断语句:
<c:if test="${not empty yourList}">
<c:forEach var="item" items="${yourList}" begin="0" end="2">
<!-- 遍历处理逻辑 -->
</c:forEach>
</c:if>
如果yourList集合不为空,就会执行遍历处理逻辑;如果yourList集合为空,就会跳过遍历处理逻辑,不会出现异常。
另外,也可以使用EL表达式来判断集合是否为空:
<c:if test="${not empty yourList}">
<c:forEach var="item" items="${yourList}" begin="0" end="2">
<!-- 遍历处理逻辑 -->
</c:forEach>
</c:if>
这样也可以避免在集合为空时出现异常。