0

I am developing a session based shopping cart.I am using two bean classes and servlet controller and try to display the contents of bean on jsp using jstl. Here i am getting the error that 'Title' not found on type Cart.CartItemBean. I have already declared Tiltle property in CartItemBean.Can someone tel me why this is showing error.

Code for Cart.CartItemBean

package Cart;


public class CartItemBean {

public int IdNumber;
private String Title;
private String Image;
private double dblUnitCost;
private int iQuantity;
private double dblTotalCost;

public int getIdNumber() {

    return IdNumber;
}

public void setIdNumber(int IdNumber) {
    this.IdNumber = IdNumber;
}

public String getImage() {
    return Image;
}

public void setImage(String Image) {
    this.Image = Image;
}

public String getTitle() {
    return Title;
}

public void setTitle(String Title) {
    this.Title = Title;
}

public double getUnitCost() {
    return dblUnitCost;
}

public void setUnitCost(double dblUnitCost) {
    this.dblUnitCost = dblUnitCost;
}

public int getQuantity() {
    return iQuantity;
}

public void setQuantity(int quantity) {
    iQuantity = quantity;
}

public double getTotalCost() {
    return dblTotalCost;
}

public void setTotalCost(double dblTotalCost) {
    this.dblTotalCost = dblTotalCost;
}

} Code For Cart.CartBean

package Cart;

import Cart.CartItemBean;

import java.util.ArrayList;


public class CartBean {

private ArrayList alCartItems = new ArrayList();
private double dblOrderTotal;
int lineItemCount = alCartItems.size();

public int getLineItemCount() {
    return lineItemCount;
}

public void deleteCartItem(String strItemIndex) {

    int iItemIndex = 0;
    try {
        iItemIndex = Integer.parseInt(strItemIndex);
        alCartItems.remove(iItemIndex - 1);
        calculateOrderTotal();
    } catch (NumberFormatException nfe) {
        System.out.println("Error while deleting cart item: " + nfe.getMessage());
        nfe.printStackTrace();
    }
}

public void updateCartItem(String strItemIndex, String strQuantity) {
    double dblTotalCost = 0.0;
    double dblUnitCost = 0.0;
    int iQuantity = 0;
    int iItemIndex = 0;
    CartItemBean cartItem = null;
    try {
        iItemIndex = Integer.parseInt(strItemIndex);
        iQuantity = Integer.parseInt(strQuantity);
        if (iQuantity > 0) {
            cartItem = (CartItemBean) alCartItems.get(iItemIndex - 1);
            dblUnitCost = cartItem.getUnitCost();
            dblTotalCost = dblUnitCost * iQuantity;
            cartItem.setQuantity(iQuantity);
            cartItem.setTotalCost(dblTotalCost);
            calculateOrderTotal();
        }
    } catch (NumberFormatException nfe) {
        System.out.println("Error while updating cart: " + nfe.getMessage());
        nfe.printStackTrace();
    }

}

public void addCartItem(int strModelNo, String strDescription,
        String strUnitCost, String strQuantity) {
    double dblTotalCost = 0.0;
    double dblUnitCost = 0.0;
    int iQuantity = 0;
    CartItemBean cartItem = new CartItemBean();
    try {
        dblUnitCost = Double.parseDouble(strUnitCost);
        iQuantity = Integer.parseInt(strQuantity);
        if (iQuantity > 0) {
            dblTotalCost = dblUnitCost * iQuantity;
            cartItem.setIdNumber(strModelNo);
            cartItem.setTitle(strDescription);
            cartItem.setUnitCost(dblUnitCost);
            cartItem.setQuantity(iQuantity);
            cartItem.setTotalCost(dblTotalCost);
            alCartItems.add(cartItem);
            calculateOrderTotal();
        }

    } catch (NumberFormatException nfe) {
        System.out.println("Error while parsing from String to primitive types: " + nfe.getMessage());
        nfe.printStackTrace();
    }
}

public void addCartItem(CartItemBean cartItem) {
    alCartItems.add(cartItem);
}

public CartItemBean getCartItem(int iItemIndex) {
    CartItemBean cartItem = null;
    if (alCartItems.size() > iItemIndex) {
        cartItem = (CartItemBean) alCartItems.get(iItemIndex);
    }
    return cartItem;
}

public ArrayList getCartItems() {
    return alCartItems;
}

public void setCartItems(ArrayList alCartItems) {
    this.alCartItems = alCartItems;
}

public double getOrderTotal() {
    return dblOrderTotal;
}

public void setOrderTotal(double dblOrderTotal) {
    this.dblOrderTotal = dblOrderTotal;
}

protected void calculateOrderTotal() {
    double dblTotal = 0;
    for (int counter = 0; counter < alCartItems.size(); counter++) {
        CartItemBean cartItem = (CartItemBean) alCartItems.get(counter);
        dblTotal += cartItem.getTotalCost();

    }
    setOrderTotal(dblTotal);
}

}

Code For ShoppingCart.jsp

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>Shopping Cart</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>

    <p><font face="Verdana, Arial, Helvetica, sans-serif"><strong>Shopping Cart</strong></font></p>
    <p><a href="AllProducts.jsp" mce_href="AllProducts.jsp">Model List</a> </p>
    <table width="75%" border="1">
        <tr bgcolor="#CCCCCC"> 
            <td><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Model 
                        Description</font></strong></td>
            <td><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Quantity</font></strong></td>
            <td><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Unit 
                        Price</font></strong></td>
            <td><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Total</font></strong></td>
        </tr>
        <jsp:useBean id="cart" scope="session" class="Cart.CartBean"/>
        <c:if test="${cart.lineItemCount==0}">
            <tr>
                <td colspan="4"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">- Cart is currently empty -<br/>
            </tr>
        </c:if>
        <c:forEach var="cartItem" items="${cart.cartItems}" varStatus="counter"> 
            <form name="item" method="POST" action="CartController">
                <tr> 
                    <td>
                        <c:out value="${cartItem.Title}"/></font></td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b></b><br/>
                </font></td>
                <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><input type='hidden' name='itemIndex' value='<c:out value="${counter.count}"/>'><input type='text' name="quantity" value='<c:out value="${cartItem.quantity}"/>' size='2'> <input type="submit" name="action" value="Update">
                        <input type="submit" name="action" value="Delete"></font></td>
                <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">$<c:out value="${cartItem.unitCost}"/></font></td>
                <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">$<c:out value="${cartItem.totalCost}"/></font></td>
                </tr>
            </form>
        </c:forEach> 

        <tr> 
            <td colspan="2"> </td>
            <td> </td>
            <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Subtotal: $<c:out value="${cart.orderTotal}"/></font></td>
        </tr>
    </table>
</body>

enter code here
user3660263
  • 135
  • 1
  • 1
  • 12

2 Answers2

1

change it to

${cartItem.title}

also change your back bean field name to standard bean naming convention

it follows jsp bean method naming convention while resolving getter

Community
  • 1
  • 1
jmj
  • 225,392
  • 41
  • 383
  • 426
0

change this,

${cartItem.title} 

alternatively you can use this also,

${(cartItem.getTitle())}
hari
  • 1,688
  • 1
  • 14
  • 10