我想检查 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/