这里为什么要作 是否为空的判断?
在类CakeController中的edit()方法中的这句代码:
if (item.getFieldName().equals("imagePath")&& cake.getImagePath()==null)
cake.setImagePath(item.getString("UTF-8"));
其中cake.getImagePath()==null这个判断似乎没有必要,根据程序顺序执行的规则,cake_edit.jsp中imagePath在image之前提交,servlet首先接收到的是imagePath,程序执行到此,cake的imagPath一定为空,因为还没有赋值,这点不理解。
正在回答
同学你好,
首先,这里确实如同学所说,加不加都一样。但是,这基于一个前提,就是这个imagePath是在image之上的。
这样如果传图片了,则最后走的是image中最后上传图片的路径。如果没上传,就是之前从imagePath中获取的路径。
但假如我们把这两个位置调一下呢?
那么即使你上传了image,在文件那里设置了新上传的图片,并设置到了cake中。
然后if中还会走这个imagePath,获取到了之前我们的图片,然后又设置到了cake中。
这样就相当于还是原来的图片了。也就是我们就无法修改之前图片。
而如果我们判断一下,如果cake.getImagePath()!=null ,说明咱们在image中对这个图片的属性进行了赋值,那我们就不用再走这个item.getFieldName().equals("imagePath")去重新给图片属性赋值了。
2)如果前端的小伙伴给我们的页面就是第二种样子的,那他们设计的也不算有错,可是,作为开发人员,就应该做好这个判断,避免出现问题,因为咱们没有办法规定那个image就必须是最后一项。
同学可以把这两个表单项调换一下位置试一下哦。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
同学你好,添加cake时,有给cake设置imagePath,但是在编辑时,item.getFileName().equals("imagePath")有值,也就是添加cake传入的值,会将添加cake时imagePath的值重新设置到imagePath中,和编辑时新添加图片的imagePath冲突。所以这里添加了cake.getImagePath()==null的判断,也就是说,如果cake中没有值,item.getFileName().equals("imagePath")直接给imagePath设置值。如果cake有值,表示这里是编辑时,将会执行else中的cake.setImagePath(path);设置新的图片路径。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
- 参与学习 人
- 提交作业 277 份
- 解答问题 4297 个
Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星