html - 如何在jsp中使用for each进行迭代
问题描述
以上是我正在尝试创建的
你好,
以上是我尝试使用spring boot创建的。我的问题是如何正确地遍历 forEach 循环并提取 JSP 中所需的必要数据?我以为我做对了,但是我不断收到错误消息“不知道如何迭代 <forEach> 中提供的“项目””
请参阅下面的代码了解我目前正在做什么。
提前感谢您的帮助!!!
控制器
@RequestMapping(value = "/showOrders.html")
public String listOrders(Model model) {
ArrayList<Order> orders = os.findAll();
model.addAttribute("allOrders", orders);
return "allOrders";
}
“订单”的服务类
package com.sales.services;
import java.util.ArrayList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.sales.models.Order;
import com.sales.repositories.OrderRepository;
@Service
public class OrderService {
@Autowired
OrderRepository or;
public ArrayList<Order> findAll() {
return (ArrayList<Order>) or.findAll();
}
}
订单的存储库类
package com.sales.repositories;
import java.util.ArrayList;
import java.util.List;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.sales.models.Customer;
import com.sales.models.Order;
@Repository
public interface OrderRepository extends CrudRepository<Order, Long> {
}
订单类
package com.sales.models;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;
@Entity
@Table(name="ORDERS")
public class Order {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="OID")
private Long oId;
@Min(1)
@Column(name="QTY")
private int qty;
@Column(name="ORDDATE")
private String orderDate;
@ManyToOne
@JoinColumn(name="cId")
private Customer cust;
@ManyToOne
@JoinColumn(name="pId")
private Product prod;
public Long getoId() {
return oId;
}
public void setoId(Long oId) {
this.oId = oId;
}
public int getQty() {
return qty;
}
public void setQty(int qty) {
this.qty = qty;
}
public Customer getCust() {
return cust;
}
public void setCust(Customer cust) {
this.cust = cust;
}
public Product getProd() {
return prod;
}
public void setProd(Product prod) {
this.prod = prod;
}
public String getOrderDate() {
return orderDate;
}
public void setOrderDate(String orderDate) {
this.orderDate = orderDate;
}
}
客户类
package com.sales.models;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.hibernate.validator.constraints.NotBlank;
@Entity
@Table(name="CUSTOMERS")
public class Customer {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="CID")
private Long cId;
@Column(name="CNAME")
@NotBlank
private String cName;
@OneToMany(mappedBy="cust")
private List<Order> orders = new ArrayList<Order>();
public Long getcId() {
return cId;
}
public void setcId(Long cId) {
this.cId = cId;
}
public String getcName() {
return cName;
}
public void setcName(String cName) {
this.cName = cName;
}
public List<Order> getOrders() {
return orders;
}
public void setOrders(List<Order> orders) {
this.orders = orders;
}
}
````````````````````````````````````````````````````````````````````````````````
Product Class
````````````````````````````````````````````````````````````````````````````````
package com.sales.models;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.Min;
import org.hibernate.validator.constraints.NotBlank;
@Entity
@Table(name="PRODUCTS")
public class Product {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="PID")
private Long pId;
@Column(name="PDESC")
@NotBlank
private String pDesc;
@Column(name="QTYINSTOCK")
@Min(value=0)
private int qtyInStock;
@OneToMany(mappedBy="prod")
private List<Order> ordersForProduct = new ArrayList<Order>();
public Long getpId() {
return pId;
}
public void setpId(Long pId) {
this.pId = pId;
}
public String getpDesc() {
return pDesc;
}
public void setpDesc(String pDesc) {
this.pDesc = pDesc;
}
public int getQtyInStock() {
return qtyInStock;
}
public void setQtyInStock(int qtyInStock) {
this.qtyInStock = qtyInStock;
}
public List<Order> getOrdersForProduct() {
return ordersForProduct;
}
public void setOrdersForProduct(List<Order> ordersForProduct) {
this.ordersForProduct = ordersForProduct;
}
}
````````````````````````````````````````````````````````````````````````````````
Jsp file where I am trying to pull all the data from
````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<link href="/css/style.css" rel="stylesheet"></link>
<head>
<meta charset="ISO-8859-1">
<title>List of Orders</title>
</head>
<body>
<h1>List of Orders</h1>
<c:forEach items="${allOrders}" var="ords">
<b>${ords.oId} </b>
<table>
<tr>
<th>Quantity</th>
<th>Order Date</th>
<th>Customer ID</th>
<th>Customer Name</th>
<th>Product ID</th>
<th>Description</th>
</tr>
<tr>
<c:forEach items="${ords}" var="order">
<tr>
<td>${order.qty}</td>
<td>${order.orderDate}</td>
<c:forEach items="${ords.cust}" var="order">
<td>${order.cId}</td>
<td>${order.cName}</td>
<c:forEach items="${ords.prod}" var="order">
<td>${order.pId}</td>
<td>${order.pDesc}</td>
</c:forEach>
</c:forEach>
</tr>
</c:forEach>
</tr>
</table>
</c:forEach>
</body>
</html>
````````````````````````````````````````````````````````````````````````````````````
解决方案
下面是这个问题的解决方案
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<link href="/css/style.css" rel="stylesheet"></link>
<head>
<meta charset="ISO-8859-1">
<title>List of Customers</title>
</head>
<body>
<h1>List of Customers</h1>
<c:forEach items="${ordrs}" var="ords">
<c:forEach items="${ords.orders}" var="order">
<b>${order.oId} </b>
<table>
<tr>
<th>Quantity</th>
<th>Order Date</th>
<th>Customer ID</th>
<th>Customer Name</th>
<th>Product ID</th>
<th>Description</th>
</tr>
<tr>
<td>${order.qty}</td>
<td>${order.orderDate}</td>
<td>${ords.cId}</td>
<td>${ords.cName}</td>
<td>${order.prod.pId}</td>
<td>${order.prod.pDesc}</td>
</tr>
</table>
</c:forEach>
</c:forEach>
</body>
</html>
`````````````````````````````````````````````````````````````````````````````````````````
推荐阅读
- jquery - Datatable.js:点击数据表中的编辑按钮时页面回发
- python - 在 Django 中,表单提交工作但无法解析用户输入
- postgresql - How do i SELECT multiple Values with postgreSQL INTO multiple variables Depending on a CASE?
- node.js - Node.Js - Return 1 if no matching document is found in MongoDB
- python - 没有管道的工作进程最有效的方法
- asp.net-mvc - 使用页面处理程序部分页面 .net 核心发布表单
- sql - SQL Aggregation with rolling window
- sql - Are there ways to do something like "case when value in table" in AS400 DB2 SQL?
- python - R-Shiny 调试模式
- python - Aggregate dataframe across multiple columns