JSTL test 为什么没起作用

Servlet代码:

    List<FoodType> foodList = service.findAll();
    request.setAttribute("foodList", foodList);
    // 2. 跳转
    uri = "/sys/type/foodtype_list.jsp";
    request.getRequestDispatcher(uri).forward(request, response);

以下是jsp的显示代码:

<c:choose>
        <c:when test="${not empty requestScope.foodList} ">
                 
            <c:forEach items="${requestScope.foodList }" var="foodType" varStatus="vs">
                <tr>
                    <td>${vs.count }</td>
                    <td>${foodType.foodTypeName }</td>
                    <td><a
                        href="${pageContext.request.contextPath }/FoodTypeServlet?method=editview&id=${foodType.id}"
                        class="FunctionButton">更新</a> <a
                        href="${pageContext.request.contextPath }/FoodTypeServlet?method=delete&id=${foodType.id}"
                        class="FunctionButton">删除</a></td>
                </tr>
            </c:forEach>
                
        </c:when>
        <c:otherwise>
            <td colspan="3">暂未添加任何菜系!</td>
        </c:otherwise>
</c:choose>

Servlet传过来的foodList是有值的,如果直接用 forEach 是可以显示的 为什么加了 test 判定就不行了呢? 困扰了很久 网上也没有找到答案 希望有大神可以解答!

阅读 3.1k
2 个回答
✓ 已被采纳新手上路,请多包涵

@alexnevsky 谢答 虽然没有说出真正的错误原因 但是我也是因为试了你的回答之后才找出来出错原因的 真正引起错误的原因竟然是

<c:when test="${not empty requestScope.foodList} ">

这句后面的引号前多了一个空格!!!
以前并没有注意到这个细节 学习的时候也没有看到 不过以后就记住了

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>standard.jar

<c:if test="${list== null || fn:length(list) == 0}"></c:if>

试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进