发布网友 发布时间:2022-04-21 19:10
共1个回答
热心网友 时间:2024-02-23 22:07
当一个请求来了之后,先执行Action,在执行结果。在action里面有Service业务层,调用Service,Service做业务处理。
开始执行Service方法的时候,开始开启事务和Session,Service方法结束或回滚提交事务,会自动关闭Session。
在Service里面查询列表加载对象的时候,但是其相关连的对象并没有加载,但是Session关闭了,关联对象最终没有加载,在页面中用到了懒加载属性,但是是在之前加载的,且Session已经关闭了,所以有了懒加载异常,说没有Session。
从上面的异常说明中可以得知,主要原因是在页面中没有Session,那么我们可以使Session不关闭,不关闭Session又会出现问题,那么我们就在整个请求的过程中添加一个过滤器或者*,过滤器或*是先进后出。我们在过滤器或*中关闭Session,也就是在当页面显示一些数据后,再在过滤器或*里面关闭Session就可以了。但是需要设置当事务提交之后,不需要关闭Session。在spring中已经有一个过滤器可以帮助我们在过滤器中关闭Session了。OpenSessionInViewFilter
注意:拦截的是所有的action,而且在Action里面调用的是Service,与struts的配置Action的扩展名一样