如何检查ArrayList是否为空或不使用c:if在JSTL中?

时间:2012-02-03 11:29:04

标签: jsp jstl

我想检查ArrayList是否为空或不使用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:表达式 正在运作。

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

2 个答案:

答案 0 :(得分:2)

JSP EL不处理JSP的局部变量。它操纵存储在四个范围之一中的对象:

  • PAGESCOPE
  • requestScope
  • sessionScope
  • applicationScope

要使此代码有效,您必须执行以下操作:

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

但是为了避免在JSP中使用Java代码,引入了JSP EL和JSP标记库。不应使用scriptlet。将servlet用于Java代码,并将其分派给JSP以获取呈现代码。或者使用像Stripes或Spring MVC这样的MVC框架。

答案 1 :(得分:1)

得到了解决方案。这是JAR文件的问题。现在我从Java.Net网站下载了JARS,它正在运行。