集合不在 jsp 文件(Spring MVC、ModelAndView)的范围内

Collection is not in scope of jsp file (Spring MVC, ModelAndView)

通常我可以在较旧的问题中找到 Whosebug 社区提供的解决方案。这次我的大脑停止工作了,我猜...

我想做的就是显示我从 MySQL 数据库中取出的客户列表。一切都很好,但是当我将 List 从控制器传递到视图时,我无法在 jsp 文件中使用它,因为它似乎超出了范围( ?).

如果您能提出任何解决方案/链接/教程,我将不胜感激

客户DAO:

public List<Customer> getAllCustomers()
    {
        EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("library-manager");
        EntityManager entityManager = entityManagerFactory.createEntityManager();
        
        TypedQuery<Customer> query = entityManager.createQuery("select e from Customer e", Customer.class);
        List<Customer> customers = query.getResultList();
        
        entityManager.close();      
        entityManagerFactory.close();
        
        return customers;
    }

客户控制器:

@RequestMapping(value = "/getAllCustomers")
    public ModelAndView getAllCustomers(){
        
        List<Customer> customers = customerDAO.getAllCustomers();
        
        return new ModelAndView("getAllCustomers", "customersList", customers);
    }

此时我不知道如何在我的 jsp 文件 (getAllCustomers.jsp) 中访问此列表。 当我尝试在 Java 块 <% %> 中访问它时,我会收到如下简单的错误:

"customers cannot be resolved to a variable"

getAllCustomers.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ page import="db_objects.Customer" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h2>List of all customers:</h2>
<%
for(Customer customer : customers){
    out.println(customer.getCustomerFirstName);
    out.println(customer.getCustomerLastName);
    out.println(customer.getCustomerContactNumber);
}
%>
</body>
</html>

我希望你能耐心地帮我一点忙:)

编辑

我得到一些信息,我的问题可能与this one

相同

我不确定它是否是自动系统,但我的问题不是如何使用 for 循环而是如何通过 ModelAndView 将集合传递给 jsp。

edit2

我刚刚明白@RamPrakash 的意思。我明天会尝试他的解决方案。 但在那之前,如果使用 scriptlet 而不是 JSTL 可能会导致该问题,也许来自不同时区的人可以回答? 提前致谢!

在您的 jsp 中,您指的是 customers 的客户列表。然而,这只是控制器的 getAllCustomers 方法上下文中的有效标识符。

尝试 customersList 并查阅 ModelAndView

的 JavaDoc