写javaweb
项目的时候,遇到了javax.el.PropertyNotFoundException: Property 'XXX' not found on type xx.xx.xx.xx
报错,困扰了好长时间,也是最后找了好多资料才明白了这个解决方法。
报错:
javax.el.PropertyNotFoundException: 在类型 [com.chiaki.book.bean.Contract] 上未找到属性 [ConLandlord]
javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:249)
javax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:201)
javax.el.BeanELResolver.property(BeanELResolver.java:322)
javax.el.BeanELResolver.getValue(BeanELResolver.java:83)
org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:124)
org.apache.el.parser.AstValue.getValue(AstValue.java:168)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:692)
org.apache.jsp.contract_005flist_jsp._jspx_meth_c_005fforEach_005f0(contract_005flist_jsp.java:308)
org.apache.jsp.contract_005flist_jsp._jspService(contract_005flist_jsp.java:199)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
com.enjoy.book.filter.UserLoginFilter.doFilter(UserLoginFilter.java:30)
对应的属性命名为ConLandlord
,使用了驼峰命名法,但实际上el表达式不能检测这样的命名,应当全部改成小写字母。
改完后发现仍然失效,有可能还有其他原因
在经过测试后发现,bean
里的属性类需要重新用idea
生成getter
和setter
,还有toString
方法。
这里是因为刚开始是idea自动生成的方法,我们在修改属性后,方法的命名没有变化,导致仍然识别错误。
附:也有可能的原因是格式错误:
标准的el表达式如下:
<c:forEach items="${列名}" var="mgr">
<option value="${mrg.emId }">${mgr.realName}</option>
</c:forEach>
注意很可能能是少了${}
,或者格式出现错误