no Session问题

在SSH项目中进行数据库查询,控制台报错出现no Session错误信息:如下图


图1

这里我从两个场景说明no Session问题及其解决方案:

场景一:

         web层页面端由easyui实现,实体类Courier对象有set集合,集合里有FixedArea对象,下图为Courier实体类中的set集合属性:

图2

页面端发出查询所有Courier请求,在web层Action中需要将从数据库中查询到的Courier对象集合转成json格式数据,然后再页面端展示,此时控制台报错,如图一。

原因:

         在转Courier对象为json数据格式的时候,对象中有fixedareas集合属性,而jpa加载策略为延迟加载。在Action中转fixedareas集合为json数据,通过代理对象查询数据库,此时Action中session已经关闭。

解决方法:

        在源头解决,出现问题是因为在转fixedareas集合的时候,而在页面端展示的数据中没有fixedareas,所以将fixedareas集合属性排除掉不转json,具体做法如图3红框部分:

no Session问题_第1张图片
图3

场景二:

         从数据库中查询到数据,在Action中数据被压入值栈,页面端从值栈中取数据,此时控制台报错。

原因:

     和上面场景原因类似,延时加载,session从数据库中查找的对象是一个代理对象,只有id,当在页面端取数据时,才真正进行查询数据库,而此时session已经关闭。

no Session问题_第2张图片
图4

解决方法:

       采用延长session的存活时间,在web.xml中配置OpenSessionInViewFilter

no Session问题_第3张图片
图5

你可能感兴趣的:(no Session问题)