zoukankan      html  css  js  c++  java
  • HTTP Status 500

     分析出现no Session错误的原因以及给出解决方案:

       使用SpringMVC + JSON数据返回时,经常会出现no Session的错误:

      报错原因:因为懒加载在提取关联对象的属性值的时候发现EntityManager已经被关闭,就报no session错误。

      控制器类中的方法上添加了@ResporseBody注解,将方法的返回值利用jackson包自动转化为JSON字符串,然后放入响应消息体中,最后发送到浏览器;

      然而jackson包都会自动调用对象的属性的get方法来获取属性的值拼接成JSON字符串,而调用get方法就需要自动发送SQL语句去查询关联对象的数据,结果发现EntityManager对象已经关闭了,已经无法在通过EntityManager对象去查询关联对象的get方法,所以就会报 no session异常。

      解决办法:让关闭EntityManager对象的动作延后到提取懒加载对象的数据之后再关闭。

      具体做法:在web.xml中添加一个过滤器OpenEntityManagerInViewFilter,使EntityManager对象的开启和关闭在视图层发生。

    <!-- 解决no session问题 -->
      <filter>
        <filter-name>noSessionFilter</filter-name>
        <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
      </filter>
      <filter-mapping>
        <filter-name>noSessionFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
  • 相关阅读:
    SQL语句字符串处理大全
    iframe的属性
    The GridView 'gv ' fired event RowEditing which wasn 't handled.
    parttime job
    一个女孩如何准备行装和安全的独自旅行
    DORADO展现中间件的实现
    在asp.net 2.0中使用自定义的provider (转)
    MemberShip 的使用介绍(转)
    DBHelper
    jQuery学习——介绍演示网站
  • 原文地址:https://www.cnblogs.com/wanghj-15/p/11062233.html
Copyright © 2011-2022 走看看