摘要:
本文将接受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:本文只是记录自己遇到的问题,有不对的地方,欢迎评论一起探讨,或者知道更深的原因的,可以告诉我哦)