ajax架構與SSH互動總返回error

來源:互聯網
上載者:User

ajax架構與SSH互動總返回error


FireFox查看異常顯示

Class org.apache.struts2.json.JSONWriter can not
access a member of class
org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper with
modifiers "public"


發現一個規律,凡是在struts2 pojo action中有對象屬性的,並被hibernate管理的,都會出現這種問題。因為hibernate會給每個被管理的對象加上hibernateLazyInitializer屬性,同時struts-jsonplugin或者其他的jsonplugin都是通過java的反射機制將pojo轉換成json的,但是hibernateLazyInitializer無法由反射得到,所以就拋異常了。

 

這種問題同樣發生在spring mvc的通過ajax訪問SSH2中。

 

解決方案:

 

第一種方法:將POJO Action中hibernate管理對象的get方法去掉,同時在struts2的struts.xml檔案中的<result type="json"></result>加入<param
name="excludeProperties">.*hibernateLazyInitializer</param>:

<result type="json">

    <param
name="excludeProperties">.*hibernateLazyInitializer</param>

</result>

用於使用struts-jsonplugin的情況。

 

第二種方法:在pojo的類上加入annotation來排除hibernateLazyInitializer 這個屬性:

annotation:

@JsonIgnoreProperties(value={"hibernateLazyInitializer"})


用於使用jackson來轉移json對象的情況。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.