【问题标题】:ArrayList from servlet to JSPArrayList 从 servlet 到 JSP
【发布时间】: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中打印出&lt;% request.getAttribute("fileNames"); %&gt;
  • 您在服务器日志中看到任何相关内容吗?

标签: java jsp servlets jstl


【解决方案1】:

我不知道错在哪里,但让我写一下可能是什么,先检查链接

 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>

希望我能有所帮助。

【讨论】:

    猜你喜欢
    • 2011-05-20
    • 2013-11-15
    • 2021-08-03
    • 2012-11-11
    • 2014-03-16
    • 2019-04-19
    • 2014-05-27
    • 2012-10-22
    • 2017-03-18
    相关资源
    最近更新 更多