有人可以告诉我为什么这不起作用吗?以下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>
如果有人可以帮助我,那就太好了,现在被困在这里超过一天!
我确定错误在哪里,但让我写下可能是什么,首先检查链接
String file = "/Library/Tomcat/webapps/HelloServlet/src";
您添加文件f,但未指定文件。...也许您丢失了文件。
在Jsp中,我的建议始终检查其是否为空,您可以使用requestScope
来获取您的setAttribute
,也可以使用varStatus=""
。
<c:if test="${requestScope.fileNames!= null}">
<c:forEach var="files" items="${requestScope.fileNames}" varStatus="loop" >
${files}
</c:forEach>
</c:if>
我希望我能有所帮助。