在SSH框架中,多個持久層物件相互引用,從而引發分頁查詢中,查詢所得的持久化物件轉換為JSON字串報錯的原因及解決方案
阿新 • • 發佈:2018-12-13
引言:
使用EasyUI框架的小夥伴們都知道,在使用datagrid(資料表格)時,會傳入如一個URL,用於請求資料表格中的所顯示的資料:
<!--建立一個空表格--> <table id="mytable"></table> <script type="text/javascript"> $(function() { //頁面載入完成後,建立資料表格datagrid $("#mytable").datagrid( { //定義標題行所有的列,注意這是一個二維陣列 columns : [ [ { title : '編號', field : 'id', checkbox : true }....... ] ], //指定資料表格傳送ajax請求的地址 url : '${pageContext.request.contextPath }/subareaAction_pageQuery' }); }); </script>
而後臺相應的是一個JSON字串,具體datagrid的使用方法,博主在另一篇文章中詳細介紹了:
既然後端需要響應的是一個JSON字串自然需要用到JSON的轉換工具,JSON轉換工具有多種,我們這裡使用Jsonlib。通過這個工具我們將在web層中將Service層返回的持久層物件轉換成JSON格式的字串,然後響應給客戶端。那麼在轉換成JSON字串過程中會出現一個問題,需要我們注意!
問題描述:
我們這裡給出兩個持久層物件:
Region物件代表區域物件,一個區域中有多個分割槽;但一個分割槽只對應一個區域。
如果我們客戶端需要需要獲得所有Subarea的資料,此時我們會將所有Subarea物件查詢出來並返回給web層,在web層中我們會將LIst<Subarea>物件通過Jsonlib工具轉換成JSON字串。但如果試圖直接用 JSONArray.fromObject(list) 方法將查詢出來的List物件轉換成JSON字串會報錯。