一、项目场景🐇
今天小编在写一个jsp+servlet的功能时,jsp报错了这个bug,现在来复盘一下这个bug的产生,和当时的解决方案,还有就是总结下自己的不严谨。
二、解决方案🐇
提督并没有第一时间百度,而是去测试了自己的代码(那时候并不认为是jsp的bug,测试了dao层,service层,都没问题;
然后以为是代码中isOff的单词拼写错误,检查之后并没有写错,然后又关闭服务器重新启动之后尝试了一下,依旧报出这个异常,尝试在博客上找相似的问题,最后发现问题在于单词命名有错误,将实体类和jsp中的名称都改为isOff之后就解决了这个问题,所以在命名过程中一定要遵循变量命名的规则避免出现类似的错误。
然后才把注意力放在jsp上,发现是el表达式的问题(看bug很重要),现在来看看el表达式展示数据的本质:
el表达式在你获取对象时,自动把你的属性名转换成字符串,并把首字母大写,进行拼接(“get”+属性名),然后通过反射的方式获取到get方法,返回属性值。实际上就是调用了一遍JavaBean里面的某属性的get函数。
提督pojo的字段名刚好撞上了:
总所周知,Boolean的set get方法会变成isXX(), 我这个字段有is了,就只会变成getOff();
public Boolean getOff() {
return isOff;
}
最后把它改成这样就好了
三、总结🐇
这个bug说起来,还是因为小编起变量名字不规范,导致出现了没有必要的错误
在一般的情况我们都会觉得这代码写得没毛病啊!字段不是要一一对应的吗?其实在Java中并不是这样的。
解决这种问题的方法:把jsp中的字段改为小写,个人建议在封装po的时候一般都是用小写的。如果你要用大写也是可以的,不过你的jsp接收的时候一定一定要用小写。
虽然现在的项目大多数是前后分离,用不到前端,本人也对前端一窍不通,以后的代码生活中需要注意这一点。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/143174.html