Struts2与ajax结合开发异常之JSONException
错误原因:实体类对象中包含集合。OpenSessionInView在此种开发方式中失效。
错误分析:当从数据库查询一个实体类数据时,若实体类中包含集合,由于hibernate的懒加载机制,会在前台视图渲染(将
javabean填充到页面中)需要集合属性时才会查询出集合,因此有了OpenSessionInView将Session的关闭延迟到了响应页面
完毕之后。但Struts2与ajax结合开发,虽然请求是通过了action,但请求结果并不是响应结果页面。这时OpenSessionInView
的延迟Session的关闭失效,而action将查出的javabean解析成json返回客户端时,由于javabean中的集合的懒加载需要Session
因此会抛出JSONException异常,