解决javax.el.PropertyNotFoundException:问题

  今天讲的这个错误对Java的初学者,一般情况都会犯这个小错误。其实很正常对于我来说刚学完c#.net,很自然会觉得字都一定要对应。要不然肯定会报错的,在Java中并不是这样的。我们回到正题,如何解决javax.el.PropertyNotFoundException错误呢!先看错误

javax.el.PropertyNotFoundException: Property 'ProductName' not found on type com.gx.po.PW_ProductAllot
 at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:229)
 at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:206)
 at javax.el.BeanELResolver.property(BeanELResolver.java:317)
 at javax.el.BeanELResolver.getValue(BeanELResolver.java:85)
 at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
 at org.apache.el.parser.AstValue.getValue(AstValue.java:182)
 at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
 at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:967)
 at org.apache.jsp.jsp.userType.list_jsp._jspx_meth_c_005fforEach_005f0(list_jsp.java:418)
 at org.apache.jsp.jsp.userType.list_jsp._jspService(list_jsp.java:220)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
 at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
 at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
 .
 .
 .

Jsp的代码如下:

<tbody>
<c:forEach items="${PWProductAllots}" var="PWProductAllot">
 <tr>
 <td>${PWProductAllot.ProductName}</td>
<td>${PWProductAllot.InterestUpperLimit}</td>
<td>${PWProductAllot.InterestBaseLine}</td>
<td>${PWProductAllot.Intereststardate}</td>
<td>${PWProductAllot.InterestClosedDate}</td>
<td>${PWProductAllot.HandleJurisdiction}</td>
<td>${PWProductAllot.HandleJurisdictionStarDate}</td>
<td>${PWProductAllot.HandleJurisdictionClosedStarDate}</td>
</tr>
</c:forEach>
</tbody>

再来看看po类的部分字段的封装如下:

private Integer ProductAllotID;
 private String productName;
 private BigDecimal CostInterest;
 private BigDecimal InterestUpperLimit;
 private BigDecimal InterestBaseLine;
 private String HandleJurisdiction;
 private String ProductNamee;
 public Integer getProductAllotID() {
 return ProductAllotID;
 }
 public String getProductName() {
 return productName;
 }
 public BigDecimal getCostInterest() {
 return CostInterest;
 }
 public BigDecimal getInterestUpperLimit() {
 return InterestUpperLimit;
 }
 public BigDecimal getInterestBaseLine() {
 return InterestBaseLine;
 }
 public String getHandleJurisdiction() {
 return HandleJurisdiction;
 }
 public String getProductNamee() {
 return ProductNamee;
 }
 public void setProductAllotID(Integer productAllotID) {
 ProductAllotID = productAllotID;
 }
 public void setProductName(String productName) {
 this.productName = productName;
 }
}

在一般的情况我们都会觉得这代码写得没毛病啊!字段不是要一一对应的吗?其实在Java中并不是这样的。
解决这种问题的方法:把jsp中的字段改为小写,个人建议在封装po的时候一般都是用小写的。如果你要用大写也是可以的,不过你的jsp接收的时候一定一定要用小写。


版权声明:本文为weixin_43741599原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>