jsp - 如何检查 ArrayList 是否为空或不使用 c :if in JSTL?

标签 jsp jstl

我想检查 ArrayList 是否为 null 或者未使用 JSTL c:if 并且它不起作用。请帮我解决这个问题。

我的代码在这里

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
java.util.ArrayList<Student> studentList = MyClass.getStudentList();
%>
<c:if test="${studentList != null}">
     <c:forEach var="student" items="${studentList}">
          <c:out value="${student.name}" />
     </c:forEach>
</c:if>

我也尝试过

<%
java.util.ArrayList<Student> studentList = MyClass.getStudentList();
%>
<c:if test="${not empty studentList}">
     <c:forEach var="student" items="${studentList}">
          <c:out value="${student.name}" /><br/>
     </c:forEach>
</c:if>

以及

<%
java.util.ArrayList<Student> studentList = MyClass.getStudentList();
request.setAttribute("studentList", studentList);
%>
<c:if test="${not empty studentList}">
     <c:forEach var="student" items="${studentList}">
          <c:out value="${student.name}" /><br/>
     </c:forEach>
</c:if>

这样的简单c:if表达式可以工作。

这段代码我做错了什么?有什么线索吗?

最佳答案

JSP EL 不操作 JSP 的局部变量。它操作存储在四个作用域之一中的对象:

  • 页面范围
  • 请求范围
  • session 范围
  • 应用范围

要使此代码正常工作,您必须执行以下操作:

<%
java.util.ArrayList<Student> studentList = MyClass.getStudentList();
pageContext.setAttribute("studentList", studentList);
%>

但是引入了 JSP EL 和 JSP 标记库以避免在 JSP 中使用 Java 代码。不应使用小脚本。对 Java 代码使用 servlet,并分派(dispatch)到 JSP 来呈现代码。或者使用 Stripes 或 Spring MVC 等 MVC 框架。

关于jsp - 如何检查 ArrayList 是否为空或不使用 c :if in JSTL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9127953/

相关文章:

jsf - c:for每个项目都没有从支持bean更新

java - for循环到jSTL forEach

java - 如何在 UI 上更新记录后显示 message.properties 中的消息

jsp - 在 JSP 中将枚举值作为标记属性传递

android - 无法接收来自 servlet 的响应

java - Spring 3 宠物诊所示例使用 ${owner.new},在 JSTL EL 中,我在哪里可以阅读有关 .new 运算符的信息?

spring - 即使包含 Jar,Tomcat 上的 Maven Java App NoClassDefFoundError

html - 使用 CSS 为通过 JSTL 检索的数据提供不同的字体大小和颜色

java - 用于导入 Excel 工作表然后将其存储到 servlet 中的数据库中的省时程序

java - 如何将自定义变量保存到 Java 中的 Struts 应用程序的请求中?