2015-08-24 1 views
2

Я пытаюсь сделать простое преобразование из ArrayList в Object Array, но я получаю сообщение об ошибке, я пробовал множество методов, как упоминание в Интернете, но ни один из них не работает, НУЖНА ПОМОЩЬОтправлено от объекта ArrayList в массив объектов в JSP

Вот что я делаю

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)

+2

насчет 'Список OBJ = (Список ) session.getAttribute ("Корзина")'? –

ответ

2

Вы не можете бросить List в массив. A List не является типом массива. Но, вы могли бы использовать List.toArray(T[]) и изменить

session.setAttribute("Cart", cartobj); 

к чему-то вроде

session.setAttribute("Cart", cartobj.toArray(new CartItems[cartobj.size()])); 

затем

CartItems[] obj = (CartItems[])session.getAttribute("Cart"); 

будет действительным.

+0

Спасибо @Elliott это сработало ... –

1

Вы должны бросить его в список, как это:

List<CartItems> obj = (List<CartItems>) session.getAttribute("Cart"); 

Еще лучше использовать JSTL для непосредственного переборе в списке объектов:

<c:forEach items="${Cart}" var="element"> 
<tr> 
    <td>${element.productName}</td> 
    <td>${element.salesAddress}</td> 
    <td>${element.quantity}</td> 
</tr> 
</c:forEach> 

И следует Java конвенции боба именования для ваших сеттеры и геттеры, например, getSales_Address не определен правильно.

0

Вы устанавливаете List<CartItems> на сессию, ArrayList не может быть отлита с помощью Array.

Попробуйте следующее:

<% 
    List<CartItems> obj = (List<CartItems>)session.getAttribute("Cart"); 
    for(int i=0;i<obj.length;i++) 
    { 
    CartItems cartItem = obj.get(i); 
    %> 
     <tr> 
      <td><% out.println(i+1); %></td> 
      <td><% cartItem.getProductName(); %></td> 
      <td><% cartItem.getPrice(); %></td> 
      <td><% cartItem.getSales_Address(); %></td> 
      <td><% cartItem.getOrder_Date(); %></td> 
      <td><% cartItem.getQuantity(); %></td> 
     </tr> 
    <% } % 

Избегайте код Java в вашем JSP столько, сколько вы можете. Вы можете достичь этого, используя JSTL.

<c:forEach items="${Cart}" var="c" varStatus="loop"> 
    <tr> 
     <td>${loop.index+1}</td> 
     <td>${c.productName}</td> 
     <td>${c.price}</td> 
     <td>${c.sales_address}</td> 
     <td>${c.quantity}</td> 
    </tr> 
</c:forEach> 
Смежные вопросы