1. 程式人生 > >EL表示式中的 javax.el.PropertyNotFoundException 分析

EL表示式中的 javax.el.PropertyNotFoundException 分析

1. javax.el.PropertyNotFoundException 一種可能,你太累了,寫錯了表示式,比如

嚴重: Servlet.service() for servlet jsp threw exception
javax.el.PropertyNotFoundException: Property 'city' not found on type java.lang.String
    at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:290)
    at javax.el.BeanELResolver$BeanProperties.access$300
(BeanELResolver.java:243) at javax.el.BeanELResolver.property(BeanELResolver.java:377) at javax.el.BeanELResolver.getValue(BeanELResolver.java:97) at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104) at org.apache.el.parser.AstValue.getValue(AstValue.java:183) at
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184) at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:944) at org.apache.jsp.view.front.SelectDeliverAddress_jsp._jspx_meth_c_005fforEach_005f0(SelectDeliverAddress_jsp.java:122) at org.apache.jsp.view.front.SelectDeliverAddress_jsp._jsp
Service(SelectDeliverAddress_jsp.java:77) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 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) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338) at com.shan.controller.front.SelectDeliverAddressServlet.doGet(SelectDeliverAddressServlet.java:34) at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 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) at com.shan.filter.EncodingFilter.doFilter(EncodingFilter.java:23) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2476) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2465) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) 二月 07, 2016 7:21:04 下午 org.apache.catalina.core.StandardWrapperValve invoke 嚴重: Servlet.service() for servlet [com.shan.controller.front.SelectDeliverAddressServlet] in context with path [/alishop] threw exception [An exception occurred processing JSP page /view/front/SelectDeliverAddress.jsp at line 15 12: <c:forEach items="uAddrsList" var="addr"> 13: 14: <%-- ${addr.province }<br /> --%> 15: ${addr.city }<br />${addr.town }<br />${addr.detail}<br /> 16: ${addr.isDefault}<br />${addr.zipCode}<br /> 17: </c:forEach> 18: </body>

看看 items=”uAddrsList” , 羞羞
解決方案:去休息一下
去休息一下

2. javax.el.PropertyNotFoundException 第二種請款可能是沒有 model 對應的 getter、setter;其次,還有要注意在eclipse 裡面自動生成的 boolean 的 getter、setter 在 EL/或者一些sql對映的時候都不起作用!!!

嚴重: Servlet.service() for servlet jsp threw exception
javax.el.PropertyNotFoundException: Property 'isDefault' not found on type com.shan.model.UserAddress
    at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:290)
    at javax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:243)
    at javax.el.BeanELResolver.property(BeanELResolver.java:377)
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:97)
    at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:183)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
    at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:944)
    at org.apache.jsp.view.front.SelectDeliverAddress_jsp._jspx_meth_c_005fforEach_005f0(SelectDeliverAddress_jsp.java:128)
    at org.apache.jsp.view.front.SelectDeliverAddress_jsp._jspService(SelectDeliverAddress_jsp.java:77)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    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)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)
    at com.shan.controller.front.SelectDeliverAddressServlet.doGet(SelectDeliverAddressServlet.java:34)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    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)
    at com.shan.filter.EncodingFilter.doFilter(EncodingFilter.java:23)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2476)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2465)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

原來的model中的域和方法如下:

private boolean isDefault;
......
    public boolean isDefault() {
        return isDefault;
    }


    public void setDefault(boolean isDefault) {
        this.isDefault = isDefault;
    }

解決方法:新增有效形式的getter/setter

//addOn for for sql mapping and EL 
    public boolean getIsDefault(){
        return isDefault;
    }
    public void setIsDefault(boolean isDefault){
        this.isDefault = isDefault;
    }

相關推薦

EL表示式javax.el.PropertyNotFoundException 分析

1. javax.el.PropertyNotFoundException 一種可能,你太累了,寫錯了表示式,比如 嚴重: Servlet.service() for servlet jsp threw exception javax.el.Proper

EL表示式param的分析

${param.name} 等價於request.getParamter(“name”),主要是伺服器從頁面或者客戶端獲取資訊的方法。 比如頁面使用了 1.<input type="text" name="uname" > ${uname}

EL表示式巢狀EL表示式解決方法

1.模擬需求:從一個商品集合中取出所有商品,第一個商品用它的第一張圖片,第二個商品用它的第二張圖片 2.起初按照通用思路,在c:forEach中定義一個varStatus,再通過vaStatus獲取下標,結果寫成了el表示式巢狀(如下),結果根本出不來 <c:forEach it

【JSP】關於EL表示式requestScope和param區別

今天演示EL表示式的時候發現自己jsp的基礎實在是薄弱,在這個很簡單的問題上迷惑了很久。 首先在看遇到的問題: 在瀏覽器地址輸入,表示傳入一個引數test,值為123 http://localhost:8888/Test/index.jsp?test=123 在index.jsp中

EL表示式關於四個作用域物件的注意事項!

主要說明獲取作用域資料獲取這方面的注意事項! 傳統方式獲取作用域資料缺點: 需要匯入java包 需要將型別強制轉換 書寫麻煩容易出現問題 使用EL表示式就可以完美解決傳統方式的缺點: 作用:獲取四個作用物件中的資料,其他宣告的變數不予理會,只獲取下邊四個作用域中

JS遍歷EL表示式的集合

前言:在我的專案裡有這麼一個情況,後臺直接session.setAttribute()儲存了一個物件,此物件內部有一個集合,前端JSP處理的方法正常情況下就是直接使用EL表示式即可。但是如果在JS中需要使用這個集合中的值,那應該怎麼處理呢? 需求:JS中遍歷“${role.modules}” 解決方案: ①正

EL 表示式EL 表示式巢狀 EL 表示式

需求 需要從一個文章集合中根據不同的標籤取出文章,第一篇文章用第一個標籤,第二篇文章用第二個標籤 原有思路 <c:forEach items="${articles}" var="article" varStatus="ids"> <img

EL表示式的empty運算子和三元運算子

ELDemo1.java檔案: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!D

JS如何使用EL表示式的物件 JSON和JS物件之間的互轉

JS中如何使用EL表示式中的物件 2017年09月25日 15:33:09 lhpnba 閱讀數:4859   1.js中使用el表示式要加雙引號或單引號:'${list}' 2.js變數獲取el表示式中的物件:不能直接獲取,直接獲取得到的是該物件的

JSP隱含變數和SpringModel在EL表示式的讀取順序

結論: 1.jsp中用EL表示式(${attribute_name})的讀取順序:model > session > application > requset 2.慎重使用session變數,這個範圍太大了,如果因為一個模組把變數存在sess

JSP九大內建物件和EL表示式的隱含物件

雖然現在基本上使用SpringMVC+AJAX進行開發了Java Web了,但是還是很有必要了解一下JSP的九大內建物件的。像request、response、session這些物件,即便使用其他框架也是會經常用到的。因此十分有了解的必要。 這些物件可以在JSP

el表示式判斷無效

今天發現個問題:el表示式中<c:if>判斷無效 el表示式中<c:if>判斷的問題: 下面的方式根本就無效: 把它當成字串處理: <c:if te

解決javascript的var變數無法儲存el表示式session域物件的值的的問題

在SpringMVC+mybatis中遇到一個這樣的問題,後臺control中通過model.addAttribute("product","test1");後,前臺js可以通過 var product=${product}獲得。 但是control中儲存在session中

jsp頁面el表示式可以使用提示的內建物件

在該環境下可以使用${pageContext.request},這個時候可以使用alt+/來自動提示 但是不能使用${request.getSession()}來提示 獲取專案名稱路徑${pageContext.request.contextPath}

在jsp怎麼使用Cookie?el表示式獲取cookie的問題

一般來說有兩種辦法,在JSP中使用Java的嵌入指令碼. 例如: 寫入Cookie <html> <head>........(中間略) </head> <body> <% String cookieName="Sender"; Cookie cooki

el表示式動態獲取map的value值

先說下業務場景,查詢介面,欄位通過迴圈list展示出來,但是其中有一個欄位為最後操作人的id,需要轉換成其對應的名稱。 頁面程式碼: <c:forEach items="${servi

JS如何使用EL表示式的物件

1.js中使用el表示式要加雙引號或單引號:'${list}' 2.js變數獲取el表示式中的物件:不能直接獲取,直接獲取得到的是該物件的toString值。 有兩種方法: 一:el中直接寫物件的屬性var abc = '${list[0].index}';--------

關於EL表示式requestScope和param區別,el表示式與jstl標籤

今天演示EL表示式的時候發現自己jsp的基礎實在是薄弱,在這個很簡單的問題上迷惑了很久。 首先在看遇到的問題: 在瀏覽器地址輸入,表示傳入一個引數test,值為123 http://localhost:8888/Test/index.jsp?test=123 在in

EL表示式的if.....else....使用方法

<c:choose> <c:when test="${userEntity.user_Authority_id == 'AAAAA'}"><!-- 如果 --> <td>修改,刪除</td> </c:

EL表示式使用兩個變數並拼接字串

像這樣的表格裡: 程式碼比較簡單: <a href="${ctx}/certificate/list?mytask=3"><font color="#FF0000" size="5">${expiredNo}</font></a&g