将从我的数据库生成几行,并显示在我的jsp页面中。我放置了1个Submit按钮,一旦用户单击了Submit按钮,我想将jsp页面中显示的数据插入到MySQL表中。我已经在该论坛中搜索了答案,并尝试遵循给出的一些解决方案,但出现此错误:java.lang.ArrayIndexOutOfBoundsException:1,当我搜索错误时,它带我到po.setAddress(address [i]);
po = new PaidOrder();
po.setId(pid[i]);
po.setPname(pname[i]);
po.setQuantity(quantity[i]);
po.setPrice(price[i]);
po.setStatus(status[i]);
po.setAddress(address[i]);
po.setUser_email(user_email[i]);
下面是完整代码:
JSP
<form action="PaidOrderController" method="post">
<table class="timetable_sub">
<thead>
<tr>
<th>Product Name</th>
<th>Quantity</th>
<th>Price</th>
<th>Total Price</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<%
OrderDAO dao = new OrderDAO();
List<Order> orderList = dao.getAllOrderByEmail(user);
DecimalFormat df = new DecimalFormat("#0.00");
for (Order o : orderList) {
%>
<tr class="rem1">
<td class="invert"><%= o.getPname() %></td>
<td class="invert"><%= o.getQuantity() %></td>
<td class="invert">RM <%= df.format(o.getPrice()) %></td>
<td class="invert">RM <%= df.format(o.getQuantity()*o.getPrice()) %></td>
<td>
<a href="EditCartController?action=edit&id=<%= o.getId()%>"><button type="button" class="btn btn-success">Edit</button></a>
<a href="DeleteFromCartController?action=delete&id=<%= o.getId()%>"><button type="button" class="btn btn-danger">Delete</button></a>
</td>
<input type="hidden" name="id" value="<%= o.getId() %>">
<input type="hidden" name="pname" value="<%= o.getPname() %>">
<input type="hidden" name="quantity" value="<%= o.getQuantity() %>">
<input type="hidden" name="price" value="<%= o.getQuantity()*o.getPrice() %>">
<input type="hidden" name="status" value="paid">
<input type="hidden" name="user_email" value="<%=user%>">
</tr>
<%
}
%>
<div class="form-group" style="margin-top:20px">
<label for="exampleFormControlTextarea1">Please fill up your address for postage below:</label>
<textarea class="form-control" name="address" rows="3"></textarea>
</div>
<div class="checkout-right-basket">
<button type="submit">Make a Payment<span class="far fa-hand-point-right"></span></button>
</div>
</form>
付费订单模型]中的代码
public class PaidOrder { private String id; private String pname; private String quantity; private String price; private String status; private String address; private String user_email; public void setId(String id) { this.id = id; } public void setPname(String pname) { this.pname = pname; } public void setQuantity(String quantity) { this.quantity = quantity; } public void setPrice(String price) { this.price = price; } public void setStatus(String status) { this.status = status; } public void setAddress(String address) { this.address = address; } public void setUser_email(String user_email) { this.user_email = user_email; } public String getId() { return id; } public String getPname() { return pname; } public String getQuantity() { return quantity; } public String getPrice() { return price; } public String getStatus() { return status; } public String getAddress() { return address; } public String getUser_email() { return user_email; } }
PaidOrderController
] >>@WebServlet(name = "PaidOrderController", urlPatterns = {"/PaidOrderController"}) public class PaidOrderController extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PaidOrder po; List<PaidOrder> listPaidOrder= new ArrayList<>(); String[] pid = request.getParameterValues("id"); String[] pname = request.getParameterValues("pname"); String[] quantity = request.getParameterValues("quantity"); String[] price = request.getParameterValues("price"); String[] status = request.getParameterValues("status"); String[] user_email = request.getParameterValues("user_email"); for(int i = 0; i < pid.length; i++){ po = new PaidOrder(); po.setId(pid[i]); po.setPname(pname[i]); po.setQuantity(quantity[i]); po.setPrice(price[i]); po.setStatus(status[i]); po.setUser_email(user_email[i]); listPaidOrder.add(po); } PaidOrderDAO.paidOrder(listPaidOrder); }
PaidOrderDAO
public static void paidOrder(List<PaidOrder> listPaidOrder){ try(Connection conn = DBConnectionUtil.getConnection()) { String sql="INSERT INTO paid_orders(pname,quantity,price,status,user_email) VALUES (?,?,?,?,?)"; PreparedStatement ps = conn.prepareStatement(sql); for(PaidOrder o:listPaidOrder){ ps.setString(1, o.getPname()); ps.setString(2, o.getQuantity()); ps.setString(3, o.getPrice()); ps.setString(4, o.getStatus()); ps.setString(5, o.getUser_email()); ps.executeUpdate(); } } catch (Exception e){ System.out.println("OrderDAO error"+ e.getMessage()); } }
我希望有人可以帮助我解决这个问题:(
将从我的数据库生成几行,并显示在我的jsp页面中。我已经放置了1个提交按钮,并且一旦用户单击提交按钮,我想插入显示在...
您收到的错误来自po.setAddress(address[i]);
,因为表格中只有一个地址。从for
循环中删除它,它将解决您的问题。
为了保存地址,例如,您需要更改processRequest
和paidOrder
的实现。 processRequest
的实现可以更改为