控制台报错:
严重: Servlet.service() for servlet jsp threw exception
javax.el.PropertyNotFoundException: Property 'brandName' not found on type java.lang.String
jsp网页报错:
type Exception report
message javax.el.PropertyNotFoundException: Property 'brandName' not found on type java.lang.String
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: javax.el.PropertyNotFoundException: Property 'brandName' not found on type java.lang.String
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
com.alan.web.SelectAllServlet.doGet(SelectAllServlet.java:29)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
root cause
javax.el.PropertyNotFoundException: Property 'brandName' not found on type java.lang.String
javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:229)
javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:206)
javax.el.BeanELResolver.property(BeanELResolver.java:317)
javax.el.BeanELResolver.getValue(BeanELResolver.java:85)
org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
org.apache.el.parser.AstValue.getValue(AstValue.java:183)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:1026)
org.apache.jsp.brand_jsp._jspx_meth_c_005fforEach_005f0(brand_jsp.java:142)
org.apache.jsp.brand_jsp._jspService(brand_jsp.java:94)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
com.alan.web.SelectAllServlet.doGet(SelectAllServlet.java:29)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.47 logs.
问题原因:el语言格式不对,我的问题就是把<c:forEach items=“” var=“”>中的items属性的值写错了,从而导致没有拿到值。
我当时的写法:
<c:forEach items="brands" var="brand" varStatus="status">
<tr align="center">
<td>${status.count}</td>
<td>${brand.brandName}</td>
<td>${brand.companyName}</td>
<td>${brand.ordered}</td>
<td>${brand.description}</td>
<c:if test="${brand.status} == 1">
<td>启用</td>
</c:if>
<c:if test="${brand.status} != 1">
<td>禁用</td>
</c:if>
正确的写法:items=${list}
```java
<c:forEach items="${brands}" var="brand" varStatus="status">
<tr align="center">
<td>${status.count}</td>
<td>${brand.brandName}</td>
<td>${brand.companyName}</td>
<td>${brand.ordered}</td>
<td>${brand.description}</td>
<c:if test="${brand.status} == 1">
<td>启用</td>
</c:if>
<c:if test="${brand.status} != 1">
<td>禁用</td>
</c:if>
<td><a href="#">修改</a> <a href="#">删除</a></td>
</tr>
</c:forEach>
网上搜集了几类情况,供参考:
目前知道有四种情况:
1,数据库中没有查到
2,el语言格式不对,把<c:forEach items=“” var=“”>中的items属性的值写错了,从而导致没有拿到值,或者有空格之类情况
3.getter和setter方法的大小写有问题,没有这个
4.序列化之后,序列化的private static final long serialVersionUID = 6999194995673459210L;
当新增了一个属性之后,这个序列化的值没有变化,导致这个属性没有持久化,最后的结果就是属性不存在导致报错。
关于序列化的详细情况请看:https://blog.csdn.net/qq_18975791/article/details/81559731