EL表达式首字母大小写的坑,Caused by: javax.el.PropertyNotFoundException

摘要:

本文将接受EL表达式的两种首字母大小写问题。

异常信息(下面说道的第二种情况的异常信息):

Caused by: javax.el.ELException: Problems calling function [fns:toJson] 
    at org.apache.el.parser.AstFunction.getValue(AstFunction.java:194) 
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:190) 
    at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:702) 
    at org.apache.jsp.WEB_002dINF.views.modules.meeting.tMeetingInvoiceEntityForm_jsp._jspx_meth_form_005fform_005f0(tMeetingInvoiceEntityForm_jsp.java:631) 
    at org.apache.jsp.WEB_002dINF.views.modules.meeting.tMeetingInvoiceEntityForm_jsp._jspService(tMeetingInvoiceEntityForm_jsp.java:253) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477) 
    ... 73 more 
Caused by: javax.el.PropertyNotFoundException: Property [tMeetingInvoiceEntityDetailList] not found on type [cn.org.ground.modules.meeting.entity.TMeetingInvoiceEntity] 
    at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:260) 
    at javax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:212) 
    at javax.el.BeanELResolver.property(BeanELResolver.java:347) 
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:92) 
    at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:113) 
    at org.apache.el.parser.AstValue.getValue(AstValue.java:169) 
    at org.apache.el.parser.AstFunction.getValue(AstFunction.java:189) 
    ... 80 more 

详细说明两种问题:

1. 通常遇到的问题:属性名命名不规范,首字母大写造成找不到属性

错误写法:
 	属性名:Name
 	EL表达式:a.Name
正确写法:
 	属性名:name
 	EL表达式:a.name

说明:EL表达式中.属性是通过调用get方法来获取属性的,而不是直接取属性。即a.name 等于a.getName();
他el表达式使用的a.Name,所以报错了。 改成a.name 即可。这样会拼成 a.getName();即可获取Name值(强烈建议规范命名)。

2.遇到的奇葩的问题:属性名,首个单词只有一个字母时

属性名:tMeetingInvoiceEntityDetailList
EL表达式:a.tMeetingInvoiceEntityDetailList

说明:这样使用似乎没有问题,属性名首字母是小写的,使用时也是没问题的,但是,奇葩的坑就是来了,使用a.tMeetingInvoiceEntityDetailList时,依旧会报找不到属性的错误,但是使用a.TMeetingInvoiceEntityDetailList是没有问题的。真的是找了半天才发现其中的问题,这个代码是历史代码,唉,还是规范命名比较靠谱,不然你不知道你会遇到什么奇葩问题。

(ps:本文只是记录自己遇到的问题,有不对的地方,欢迎评论一起探讨,或者知道更深的原因的,可以告诉我哦)

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值