无法从Servlet中打印JSP中的ArrayList

时间:2018-04-24 00:00:29

标签: java jsp servlets

所以我在java servlet中创建了这个简单的列表,我希望在JSP页面中显示它。 Servlet代码:

public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{


            ArrayList<String> myList = new ArrayList<String>();

            myList.add("cat");
            myList.add("dog");
            myList.add("frog");
            request.setAttribute("list", myList);
            String nextJSP = "/index.jsp";
            RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP);
            dispatcher.forward(request,response);
}

}

但是它不会在以下JSP文件中打印:

<%@page import="java.io.*" %>
<%@page import="java.net.*" %>
<%@page import="java.util.*" %>
<%@page import="java.util.List" %> 
<%@page import="java.util.ArrayList" %>
<%@page language="java" import="myPackage.*" %>

<!DOCTYPE html>
<html>
<body>

<h1>My First Heading</h1>

<p>My first paragraph.</p>

<% List<String> myList = (ArrayList<String>) 
 request.getAttribute("list"); %>
<% out.println(myList); %>


 </body>

 </html>

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:1)

HTTP 500错误来自这一行:

<% List<String> myList = (ArrayList<String>) 
 request.getAttribute("list"); %>

它有额外的(),删除它并按下面的方式设置,然后HTTP 500将显示,而不是你会收到警告Type safety:Unchecked cast from Object to ArrayList<String>,但这并不重要

关于如何打印ArrayList,如果你的jsp页面中有import JSTL标签,你可以按照下面的说法进行操作,之前的答案已经提到:

<c:forEach var="li" items="${list}">
 <c:out value="${li}"/> 
</c:forEach>

如果您不想使用JSTL,可以使用java代码进行打印:

 <% for(int i=0;i<myList.size();i++){
   out.println(myList.get(i));
 } %>

答案 1 :(得分:0)

好的,您有HTTP 500错误消息,我怀疑它来自您的代码的以下部分:

String

请记住,此处使用的out不是System.out,并且行为方式不同。而是尝试(替换以下提到的行):

10

答案 2 :(得分:0)

您可以使用核心标记foreach作为

<c:forEach var="list" items="${YourList}">
 <c:out value="${list}"/> 
</c:forEach>