我正在尝试从 ArrayList 到对象数组进行简单的转换,但出现错误,我尝试了互联网上提到的多种方法,但没有一个有效,需要帮助
这就是我正在做的事情
private List<CartItems> cartobj = new ArrayList<CartItems>();
--- Bean (Cart) ---
private String name;
private float price;
private int quantity;
--- In Servlet ---
Order h = new Order(String a, String b, String c);
cartobj.add(h);
session.setAttribute("Cart", cartobj);
--- In JSP ---
<tbody>
<% ArrayList<CartItems> cartobj = new ArrayList<CartItems>();
cartobj.add((CartItems)session.getAttribute("Cart"));
for(int i=0;i<cartobj.size();i++)
{%>
<tr>
<td><% out.println(i+1); %></td>
<td><% cartobj.get(i).getProductName(); %></td>
<td><% cartobj.get(i).getPrice(); %></td>
<td><% cartobj.get(i).getSales_Address(); %></td>
<td><% cartobj.get(i).getOrder_Date(); %></td>
<td><% cartobj.get(i).getQuantity(); %></td>
</tr>
<% } %>
我也尝试过这个
<%
CartItems[] obj = (CartItems[])session.getAttribute("Cart");
for(int i=0;i<obj.length;i++)
{%>
<tr>
<td><% out.println(i+1); %></td>
<td><% obj[i].getProductName(); %></td>
<td><% obj[i].getPrice(); %></td>
<td><% obj[i].getSales_Address(); %></td>
<td><% obj[i].getOrder_Date(); %></td>
<td><% obj[i].getQuantity(); %></td>
</tr>
<% } %>
我收到以下错误
SEVERE: Servlet.service() for servlet [jsp] in context with path [/Final_Project] threw exception [java.lang.ClassCastException: java.util.ArrayList cannot be cast to [LObjects.CartItems;] with root cause
java.lang.ClassCastException: java.util.ArrayList 无法转换为 [LObjects.CartItems; 在 org.apache.jsp.cart_jsp._jspService(cart_jsp.java:165)
最佳答案
您无法将 List
转换为数组。 List
不是一种数组类型。但是,您可以使用 List.toArray(T[])
并改变
session.setAttribute("Cart", cartobj);
类似于
session.setAttribute("Cart", cartobj.toArray(new CartItems[cartobj.size()]));
然后
CartItems[] obj = (CartItems[])session.getAttribute("Cart");
将是有效的。
关于java - 在 JSP 中从对象 ArrayList 转换为对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32174350/