今天一下午就被一个异常难住了,第一次结合了struts2和hibernate做一个项目,结果出问题了。。。。。。

   通过json向页面传对象的时候一直报错:

     org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException
org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:243)
org.apache.struts2.json.JSONWriter.process(JSONWriter.java:165)
org.apache.struts2.json.JSONWriter.value(JSONWriter.java:131)
org.apache.struts2.json.JSONWriter.write(JSONWriter.java:99)
org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:112)
org.apache.struts2.json.JSONResult.execute(JSONResult.java:198)
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:362)

   在网上找了半天,说了几种情况,

      一个是action中的getset方法使用不当(例如把service对象设置了getset对象、或者自己定义的方法有get、set方法开头的)

     二是说hibernate中的session对象没有关闭,出现缓存错误,我关闭了吧,页面又无法得到数据,我就想了个办法,在hibernate.cfg.xml中改变session的声明周期,

     <property name="hibernate.current_session_context_class">thread</property>

    还差不多就是这样,我把前面的一种情况检查了下,发现自己没有出现这样的问题,所以想想是session未关闭。出现缓存冲突什么的。所以就换了一种方式使用session,就是改变session的生命周期    ,然后得到session对象通过SessionFfactory 的getCurrentSession()方法。

  后面差不多就这样没有管了,因为觉得心情有点烦躁了。弄了一大下午。后面运行的时突然发现能用了。。。所以肯定是session的问题,但至于是不是session范围的问题。。。我不怎么清楚

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐