EL表达式中的首字母大写造成的bug
来源:互联网 发布:python的idle怎么运行 编辑:程序博客网 时间:2024/05/17 06:29
今天用EL表达式的${ }时出bug了。
org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/reader/show.jsp at line 1615: 16: ${reader.R_ID}<br/>17: Stacktrace:org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:584)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:481)org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)javax.servlet.http.HttpServlet.service(HttpServlet.java:729)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168)org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1244)org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027)org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971)org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)javax.servlet.http.HttpServlet.service(HttpServlet.java:622)org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)javax.servlet.http.HttpServlet.service(HttpServlet.java:729)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
javax.el.PropertyNotFoundException: Property 'R_ID' not found on type net.xcj.entity.Readerjavax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:259)javax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:212)javax.el.BeanELResolver.property(BeanELResolver.java:346)javax.el.BeanELResolver.getValue(BeanELResolver.java:92)org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:110)org.apache.el.parser.AstValue.getValue(AstValue.java:169)org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:944)org.apache.jsp.WEB_002dINF.jsp.reader.show_jsp._jspService(show_jsp.java:130)org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)javax.servlet.http.HttpServlet.service(HttpServlet.java:729)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443)org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)javax.servlet.http.HttpServlet.service(HttpServlet.java:729)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168)org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1244)org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027)org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971)org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)javax.servlet.http.HttpServlet.service(HttpServlet.java:622)org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)javax.servlet.http.HttpServlet.service(HttpServlet.java:729)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
看了看,上面说Reader类中没找到R_ID,但是我去Reader中找,R_ID在那里静静地躺着。最后才发现,原来EL表达式,比如说${Reader.name},它会根据name去Reader类里寻找这个name的get方法,此时会自动把name首字母大写并加上get前缀, 一旦找到与之匹配的方法,El表达式就会认为这就是要访问的属性,并返回属性的值EL表达式会根据name去Reader类里寻找这个name的get方法,此时会自动把name首字母大写并加上get前缀, 一旦找到与之匹配的方法,El表达式就会认为这就是要访问的属性,并返回属性的值。
一般按照规范来说,属性的首字母是小写的,不过我因为按数据库表来命名,首字母大写了,就遇见了这个bug,只需要把${reader.R_ID}改成${reader.r_ID}就行了。
阅读全文
2 0
- EL表达式中的首字母大写造成的bug
- el表达式的首字母大小写问题
- EL表达式fn:endsWith函数的bug
- Python将list中的每一项的首字母大写
- 命名不规范造成的el表达式取不到值
- 正则表达式替换单词首字母大写
- 讲一句话中的每个单词首字母大写
- 首字母大写
- 大写首字母
- 首字母大写
- 首字母大写
- 首字母大写
- 首字母大写
- 首字母大写
- 首字母大写
- 首字母大写
- 首字母大写
- EL表达式取Session取不出来的bug
- 基于zookeeper简单实现分布式锁
- 背包问题
- HDU 4825 Xor Sum(经典01字典树)
- 获取当前电脑系统时间
- JS基础
- EL表达式中的首字母大写造成的bug
- Html入门笔记整理
- Spring-AOP 引介切面
- struts-自定义标签
- 50个非常实用jQuery代码段
- Hdu 1978 How many ways(dp)
- hibernate-hibernate的配置
- WinFrom程序-配置文件的使用
- AJAX的使用