【踩坑笔记】javax.el.PropertyNotFoundException:类型[XXXX]上找不到属性[XXXX]

如果我告诉你,你平时代码中命名不规范可以会导致你项目程序运行出错,你注意还是不注意?
这次博主就因为类的属性命名不规范,导致程序出现了问题。

这是博主的踩坑笔记专栏,希望遇到的问题可以积少成多,纪录的问题越多,能解决的问题也就越多,也希望我遇到的问题可以帮助到在看这篇文章的读者朋友们。
在这里插入图片描述


问题背景

在写一个管理系统时,通过Servlet在后台访问数据库,将读取到的数据存储实例化为一个实体类,并存储在一个存储该实体类的列表中,然后将列表保存在session会话中。在前端网页视图的渲染中通过<c:forEach>来遍历session中的列表,打印出一个表格。
具体代码如下:

<c:forEach var="b" items="${list}" varStatus="status">
                    <tr>
                        <td>${b.id}</td>
                        <td>${b.activityname}</td>
                        <td>${b.promotion}</td>
                        <td>${b.activitycost}</td>
                        <td>${b.Pnum}</td>
                        <td>${b.Avercost}</td>
                        <td><button onclick="doJoin(this)" class="btn btn-info" name="" value="${status.count}">申请参加</button></td>
                    </tr>
                </c:forEach>

启动后运行却出了问题:
在这里插入图片描述
这里提示jsp文件第71行找不到Pnum属性,这让我百思不得其解。
我转去查看我的Activity类的属性,没有问题,
在这里插入图片描述
查看set和get方法。
在这里插入图片描述
查看构造方法。
在这里插入图片描述
这些方法都是IDEA自动帮我们生成的。细心的读者们发现了没有。最后两个属性Pnum和Avercost在所以方法里面都没有使用this关键字!我试着手动加上,加完测试,依然提示没有这个属性。
这是博主第一次因为命名不规范而出现错误,实在是让我大吃一惊,IDEA中的许多jar包为我们的开发提供了很多便利,但同时也要求我们有一个良好规范的编码风格,博主此前也遇到过在类中没写get和set方法导致程序运行出错的事故。


解决方法

把Activity中的Pnum属性和Avercost属性的首字母改成小写的,然后重新生成相应的get和set方法,以及构造方法。
重新运行程序,已经没有错误了。
在这里插入图片描述


总结

在学习计算机之前,老师就教导我们对于变量和类的命名都是有一定规则的,比如说顾名思义,单词大小写。一块整洁清晰的代码不仅可以让你的思路清晰,更可以让别人眼前一亮。
关于一些编程的基本规范,我看到一篇不错的文章,在这里分享给大家。Java的代码风格
最后希望大家都可以养成良好的编码习惯。


千里崎岖不辞苦,

仗剑江湖为红颜


版权声明:本文为qq_45792455原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。