java - ArrayList 从 servlet 到 JSP
问题描述
有人能告诉我为什么这不起作用吗?以下 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>
我希望我是有帮助的。
推荐阅读
- css - 在卡片网格上执行搜索时,引导卡片被压扁
- android - 在 Firebase.goOffline() 之后登录
- r - R中的正则表达式和ID
- node.js - AWS lambda 在节点 js 中获取处理程序或上下文信息
- powershell - Powershell 创建新的注册表值
- python - Sympy:如何显示导致被零除的条件?
- python - 如何从 Python 中的内存中 mp4 文件(字节缓冲区)中提取帧?
- sql - 寻找删除违规记录的 SQL 连接示例(行删除行清理 SQL 连接)
- php - 无法将多维数组转换为单个 php 数组
- angular - 路由到与当前页面相关的另一个组件页面时如何保持 routerLinkActive 设置?