no Session问题

作者: hddwsz | 来源:发表于2017-08-11 19:24 被阅读0次

    在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红框部分:

    图3

    场景二:

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

    原因:

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

    图4

    解决方法:

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

    图5

    相关文章

      网友评论

        本文标题:no Session问题

        本文链接:https://www.haomeiwen.com/subject/ahyrrxtx.html