集合不在 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
通常我可以在较旧的问题中找到 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