1. 程式人生 > >在SSH框架中,多個持久層物件相互引用,從而引發分頁查詢中,查詢所得的持久化物件轉換為JSON字串報錯的原因及解決方案

在SSH框架中,多個持久層物件相互引用,從而引發分頁查詢中,查詢所得的持久化物件轉換為JSON字串報錯的原因及解決方案

引言:

使用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字串會報錯。

問題分析: