被struts2坑的一次小记录……

自己跟着做的一个小项目,用的是Struts2+spring+Hibernate+maven做的。本来做的好好的,第三天的时候做到一个批量删除的东西,不灵光了,调试了半天仍然报错:

java.lang.IllegalArgumentException: attempt to create delete event with null

看了半天配置文件也发现一切正常没有错,因为其他的业务代码是可以跑通的

真的不知道怎么办,从字面意义上来看,是我做批量删除的时候删除了一个空的对象,没有查询到这个东西,所以报错了。看看我后台写的删除代码:

service:


Dao:


所以我们跟踪到这里可以看到这一句:this.getSession().delete(get(entityClass, id));

在我们做删除的时候,我们还做了一个get(entityClass, id)的操作,因为hibernate的删除只能删除一个实体对象,所以我们需要先查询出来在做删除。可是我早上看了半天,但我删除一条记录的时候没有问题,但是当我点两条记录的时候,老是删除失败,提示错误信息。实在没辙了,我用Debug跟踪了半天,从action层开始跟踪,在get()函数中写了一个输出以便于是否真的查询到了要删除的实体



然后我跟踪着跟踪着,当我做两个删除的时候,第二个实体总是查询不到!!!为什么?我看了很久,很纠结,id并没有错,Struts2也封装到很好,确实是用的逗号分隔符进行封装。然后我再认真看了一下,这个时候发现了一个很致命的东西……

我发现Struts2封装的前段页面传过来的id串,第二个开始,前面会无缘无故多了一个空格字符………………


找出了错误的原因再修改就很简单了。。。只需要重新组织一下Stirng数组再传值就可以了。真心被坑。

所以我修改了删除这个函数去除id值的这个部分,原来是:


改成了:


修改后:


………………不知道为什么会这么坑。。。。。算是学到了吧。。以后遇到错误还是要认真细心的调试啊!






原创文章 25 获赞 5 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_41450959/article/details/80704470
今日推荐