[英]Cant print ArrayList in JSP from Servlet
因此,我有一个用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>
任何帮助,将不胜感激!
HTTP 500
错误来自以下行:
<% List<String> myList = (ArrayList<String>)
request.getAttribute("list"); %>
它具有多余的()
,将其删除,并使其如下所示,然后HTTP 500
就会消失,相反,您会收到警告Type safety:Unchecked cast from Object to ArrayList<String>
强制转换Type safety:Unchecked cast from Object to ArrayList<String>
,但这没关系
对于如何打印ArrayList,如果您在jsp页面中导入了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));
} %>
好的,您收到的是HTTP 500错误消息,我怀疑它来自代码的以下部分:
<% out.println(myList); %>
请记住,此处使用的输出不是System.out,并且行为方式也不相同。 而是尝试(用以下内容替换上面提到的行):
<% Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
out.println(<iterator.next());
}
%>
您可以使用核心标记foreach作为
<c:forEach var="list" items="${YourList}">
<c:out value="${list}"/>
</c:forEach>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.