專案中用到json之後,稍不注意就會出現問題,當然,遇到問題最多的情況就是專案整合hibernate之後,由於hibernate的懶載入帶來的序列化問題。由於json的原理是將物件進行序列化,而序列化就是將物件字串化,由於hibernate的懶載入,會帶來級聯,就會導致序列化時將物件級聯的物件全部序列化,然後再對級聯的級聯物件進行序列化,這樣很可能就會報錯,即使不報錯,也會帶來問題,本來只想返回前台乙個物件的資料,結果返回了n個物件的資料,無疑導致了傳輸資料的壓力。而解決這種問題主要有以下幾種方法:
1.如果專案運用了struts2以及strus2的jsonplugin,為了避免對不需要的物件進行傳輸,可以在get方法上加上@json(serialize=false).這樣在傳遞json的時候就不會對此物件序列化。同理,如果遇到hibernate的entity,則對不需要傳輸的物件或資料的get方法上加上@json(serialize=false),就不會對這些進行json序列化。
2.第二種方法,就是在struts2的返回值時候進行新增param標籤,具體如下:
infomsg
上述方式為只傳遞變數為infomsg的json字串。
userlist\[\d+\]\.id
上述為值傳遞userlist集合中包含的物件裡的id屬性
imglist\[\d+\]上述為傳遞imagelist
infomsg
上述為排除infomsg
userlist\[\d+\]上述為值傳遞userlist的根屬性。比如userlist有個id屬性,則傳遞時的格式為,同樣如果包傳遞的是個map,則不傳遞map名稱,只傳遞鍵值對。
使用jsonplugin常見問題
版本 0.32 struts2 2.0.x 1 效率低,頁面反應慢 2 如果物件存在雙向關聯,則在序列化中會出現死迴圈現象 貌似這樣,還未實際測試 3 在序列化hibernate中動態 時會報異常。action常見的是biz dao引用 4 中如果指定物件中關聯的物件時,不能用 號需要用 比如sta...
關於this 的使用
如有不對的地方請大家指出,呵呵.this 的使用 1.this是指當前物件自己。當在乙個類中要明確指出使用物件自己的的變數或函式時就應該加上this引用。如下面這個例子中 public class a public static void main string args 執行結果 s hellow...
關於MenuHelp的使用
很多程式都是有選單和狀態列,當用滑鼠點開選單移動選擇各選單項的時候,會在狀態列顯示關於該選單項的說明。這個功能mfc是封裝好的,用嚮導生成即可,但用api程式設計就得自己編寫 了,查了一下msdn,有個menuhelp函式可以做到,函式原型為 void menuhelp uint umsg,wpar...