【发布时间】:2018-09-22 18:10:28
【问题描述】:
有人能告诉我为什么这不起作用吗?以下 servlet 代码由目录中存在的列表文件组成:
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
String file = "/Library/Tomcat/webapps/HelloServlet/src";
File f = new File(file);
ArrayList<String> names = new ArrayList<String>(Arrays.asList(f.list()));
request.setAttribute("fileNames", names);
RequestDispatcher rd = getServletContext().getRequestDispatcher("main.jsp");
rd.forward(request, response);
}
JSP 中的下一个代码序列打算打印此列表,但它不起作用:
<%@ page import="java.text.*,java.util.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.Arrays"%>
<c:forEach var="files" items="${fileNames}" >
${files}
</c:forEach>
如果有人可以帮助我,那就太好了,已经坚持了一天多!
【问题讨论】:
-
您是否遇到任何错误?另外,您可以在将
names的值添加到request对象之前打印它吗? -
没有!这真的让我很困惑,当我将 jstl 标记 ${fileNames} 用于字符串时它工作正常,但是当它是一个 ArrayList 时我什么也得不到......
-
作为附注,而不是 jsp 上的
jstl,您可以使用request.getAttribute("fileNames")从请求对象中简单地获取属性,在这种情况下,您不需要列表本身。 -
在你的jsp中打印出
<% request.getAttribute("fileNames"); %> -
您在服务器日志中看到任何相关内容吗?