报错:javax.el.PropertyNotFoundException: Property ‘brandName‘ not found on type java.lang.String

控制台报错:

严重: 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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值