標籤:發送資料 一個 注意 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的情況下)