2015-09-26 102 views
1

我有一个jsp,我正从中访问名为Customer的java bean的属性shoppingbag。但不幸的是,每当我跑我的jsp我得到这个例外javax.el.PropertyNotFoundException:没有在类[Others.Customer]上找到名为[ShoppingBag]的公共静态字段

org.apache.jasper.JasperException: org.apache.jasper.JasperException: javax.el.PropertyNotFoundException: No public static field named [ShoppingBag] was found on class [Others.Customer] 
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:555) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:461) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 

javax.el.PropertyNotFoundException: No public static field named [ShoppingBag] was found on class [Others.Customer] 
javax.el.StaticFieldELResolver.getValue(StaticFieldELResolver.java:61) 
org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:110) 
org.apache.el.parser.AstValue.getValue(AstValue.java:169) 
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184) 
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:936) 
org.apache.jsp.Header_jsp._jspx_meth_c_005fif_005f0(Header_jsp.java:249) 
org.apache.jsp.Header_jsp._jspService(Header_jsp.java:167) 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:934) 
org.apache.jsp.MainPage_jsp._jspService(MainPage_jsp.java:107) 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 

这里是我的JSP

<li class="dropdown"> 
     <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" >WOMEN <span class="caret"></span></a> 
     <ul class="dropdown-menu" role="menu"> 
     <li><a href="AbdulTayyebs?ID=201">Tops </a></li> 
     <li><a href="AbdulTayyebs?ID=202">Shirts </a></li> 
     <li><a href="AbdulTayyebs?ID=203">Trousers & Jeans </a></li> 
     <li><a href="AbdulTayyebs?ID=204">Inner Wears </a></li> 
     <li><a href="AbdulTayyebs?ID=205">Leggings</a></li> 
     </ul> 
    </li> 
<li class="dropdown"> 
     <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" >KIDS<span class="caret"></span></a> 
     <ul class="dropdown-menu" role="menu"> 
     </ul> 
    </li> 
    <li role ="presentation" class="dropdown"> 
     <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" ><span class="glyphicon glyphicon-shopping-cart" ></span></a> 
     <ul class="dropdown-menu" role="menu"> 
      <c:if test="${Customer!=null}"> 
       <li><a href="Billing.jsp">Shopping Cart <span class="badge"> 
       ***${Customer.ShoppingBag.Size}*** 
         </span> </a></li> 
      </c:if> 
      <c:if test="${Customer==null}"> 
      <li><a href="Billing.jsp">Shopping Cart <span class="badge">${0}</span> </a></li> 
      </c:if> 
     </ul> 
    </li> 
</ul> 
</div> 
<!-- Collect the nav links, forms, and other content for toggling --> 
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> 
    <form class="navbar-form navbar-left" role="search" action="AbdulTayyebs?"> 
    <div class="form-group"> 
     <input type="text" class="form-control" width="200" placeholder="Search" name="Search"> 
    </div> 
    <button type="submit" class="btn btn-default">Search</button> 
    </form> 
<ul class="nav navbar-nav navbar-right"> 
    <li><a href="#">Contact Us </a></li> 
    <c:if test="${Logged == false or Logged==null}"> 
    <li><a href="Signup.jsp"><span class="glyphicon glyphicon-log-in"></span> Login</a></li></c:if>  
    <c:if test="${Logged!=null}"> 
    <c:if test="${Logged==true}"> 
    <li class="dropdown"> 
     <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" >${Customer.getFirstname()}<span class="caret"></span></a> 
     <ul class="dropdown-menu" role="menu"> 
     <li><a href="Profile.jsp"> View Profile </a></li> 
     <li><a href="AbdulTayyebs?ViewAddress=true"> Add/Remove Address </a></li> 
     <li><a href="ChangePassword.jsp"> Update Password </a></li> 
     <li><a href="AbdulTayyebs?GetOrders=true"> My Orders </a></li> 
     </ul> 
    </li> 
    <li><a href="AbdulTayyebs?Action=Logout"><span class="glyphicon glyphicon-log-out"></span> Logout</a></li> 
    </c:if> 
    </c:if> 
    </ul> 
</div> 
</nav> 


,这里是我的类客户

public class Customer extends User implements java.io.Serializable{ 
private String password; 
private ArrayList <PurchaseableItem> ShoppingBag; 
private ArrayList <String> WishList;; 

public Customer() { 
super(); 
ShoppingBag=null; 
WishList=null; 
} 
public String getPassword() { return password; } 

public ArrayList<String> getWishList() { return WishList; } 

public void setWishList(ArrayList<String> WishList) { this.WishList = WishList; } 

public void setPassword(String password) { this.password = password; } 

public ArrayList<PurchaseableItem> getShoppingBag(){ return this.ShoppingBag; } 

public void setShoppingBag(ArrayList<PurchaseableItem> ShoppingBag) { this.ShoppingBag = ShoppingBag; } 

public void AddToShoppingBag(ArrayList<PurchaseableItem> ShoppingBag){ 
    if(ShoppingBag!=null){ 
    if(this.ShoppingBag==null){ 
    this.ShoppingBag = new ArrayList<>(); 
    }  
    for(PurchaseableItem prc:ShoppingBag) 
    this.ShoppingBag.add(prc); 
} 
} 

public int TotalItems(){ 
return ShoppingBag.size(); 
} 
} 

我不能理解为什么这个错误正在发生如果有人能够帮助我,那么这将是非常可观的

回答

0

由于不尊重Java命名约定,您正在拍摄自己的脚。它们很简单:

  • 软件包以小写命名。所以包Others应该被命名为others
  • 变量,包括字段,都是camelCased。所以ShoppingBag应该被命名为shoppingBag,并且WishList应该被命名为wishList
  • 方法是camelCased。所以AddToShoppingBag()应该被命名为addToShoppingBag()
  • 当你有一个名为getShoppingBag()的getter时,相应的bean属性被命名为shoppingBag,而不是ShoppingBag。 JSP EL用于访问bean属性。因此,要从JSP EL调用customer.getShoppingBag(),请使用${customer.shoppingBag}而不是${customer.ShoppingBag}
  • 在camelCase中,页面,请求,会话和应用程序属性被命名为局部变量。所以你不应该有${Customer},但总是${customer}

尊重这些Java约定,一切都会好得多,你的代码会一致,你的同事不会觉得自己会杀死你。

+0

非常感谢主席先生 –

相关问题