2012-02-03 79 views
2

我想檢查ArrayList是否爲空或不使用JSTL c:如果並且它不起作用。請幫我解決這個問題。如何檢查ArrayList是否爲空或不使用c:如果在JSTL中?

我的代碼是在這裏

<%@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:如果表情像都在工作。

我在做什麼錯在這段代碼?任何線索?

+0

還嘗試了請求屬性以及* varStatus =「loop」*屬性。 – 2012-02-03 11:46:59

+0

我正在使用JRE 6和Tomcat 7. – 2012-02-03 11:58:20

回答

1

得到了解決方案。這是JAR文件的問題。現在我從Java.Net網站下載了JARS,它正在工作。

2

JSP EL不處理JSP的局部變量。它操縱存儲的對象在四個範圍之一:

  • 的PageScope
  • requestScope
  • sessionScope
  • applicationScope

對於此代碼工作,你就必須做:

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

但是JSP EL和引入了JSP taglibs以避免在JSP中使用Java代碼。 scriptlet不應該被使用。爲您的Java代碼使用一個servlet,然後分配給JSP來獲取渲染代碼。或者使用像Stripes或Spring MVC這樣的MVC框架。

+0

也試過了。對不起,沒有發佈。發佈該信息。 – 2012-02-03 11:45:09

+0

你沒有正確嘗試。爲反向條件添加另一個:您的列表可能爲空。 – 2012-02-03 11:48:22

+0

不。當我使用out.print(studentList.get(0).getName())等表達式打印時,它正在打印。 – 2012-02-03 11:51:02

相關問題