struts2發送ajax的幾個問題(不使用struts2-json-plugin的情況下)

來源:互聯網
上載者:User

標籤:發送資料   一個   注意   app   struts   post   有一個   效率   而且   

採用原始方式發送ajax到action時,會遇到get,post的不同,原因是ContentType的問題,ContentType必須是text/html,struts擷取到的inputStream才會有值!而預設jquery發送ajax採用的ContentType是application/x-www-form-urlencoded; charset=UTF-8,如果手動設定為json格式進行發送,那麼struts2就擷取不到資料了,所以在採用Post提交時不用指定ContentType,採用預設的就行,這點和Springmvc不一樣,Springmvc發送json時得指定 contentType 為 ‘application/json;charset=utf-8‘,而且json得是完全格式的字串,但是struts2不光contentType只支援text/html,而且發送資料也不需要轉成json字串,直接發送json對象即可,有點坑啊

 

 

 

採用原始方式輸出json時,可以使用fastjson,這個效率比較高,不過下列幾點得注意:

1、不需要進行json轉換的欄位,在set方法上加上@JSONField(serialize=false)
2、相互引用的對象,必須有一個對象的屬性set方法上加上@JSONField(serialize=false),以防循環參考
3、fastjson轉換資料不能使用hibernate的load方法擷取到的資料,報堆疊溢位錯誤
4、list中相同對象進行json轉換時,預設下一對象會顯示成一個引用前一個的ref,需要設定一下fastjson對相同對象同樣進行json轉換
String jsonStr = JSON.toJSONString(list, SerializerFeature.DisableCircularReferenceDetect);//關閉引用檢測後

struts2發送ajax的幾個問題(不使用struts2-json-plugin的情況下)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.