1. 程式人生 > >jeecg全域性異常處理GlobalExceptionResolver修改,改善使用者體驗度

jeecg全域性異常處理GlobalExceptionResolver修改,改善使用者體驗度

使用過jeecg的大都知道,對於異常處理,無需開發者自己捕獲異常,只需要丟擲即可,jeecg會在GlobalExceptionResolver做統一處理

對於本專案來說,檢視程式碼,發現所有的異常都被拋到頁面上了,這種對於使用者體驗度非常不好,系統使用過程中如果出現異常,介面出現一串串

堆疊異常算是怎麼回事,因此,就需要對這些異常進行處理,給使用者一個友好的錯誤介面

原來的想法是,直接寫一個新的頁面,加圖片,文字,給使用者提示性資訊,結果發現,

非ajax的倒是沒有什麼問題,開啟Tab頁,如果後臺有異常,則直接跳轉到錯誤頁面,

但是隻要是ajax請求的,jeecg都會在介面出現一個彈窗,彈窗裡面是

1.錯誤頁面返回的資料資訊,一大串json字串,

2.我自定義的錯誤頁面資訊

3.額,一個確定按鈕

(額,就下面這個,我截取了頭和尾巴)(醜陋的彈窗框,根本無法直視)



找了大半天,發現是這塊syutil.js中如下方法

$.ajaxSetup({
	type : 'POST',
	error : function(XMLHttpRequest, textStatus, errorThrown) {
		debugger;
		$.messager.progress('close');
//		window.location.href="xxxxxxx.do?error";
		$.messager.alert('錯誤', XMLHttpRequest.responseText);
//		$(".messager-button").remove();
		
	}
});

找到這了,那就好辦了,直接使用location.href讓其跳轉到錯誤頁面,而不使用easyui的$.messager即可,這樣,ajax和非ajax的

錯誤提示就統一了。

另外,還有jsp頁面的異常處理就是在web.xml中這樣配置,就不用在每個jsp中單獨配置了

  <error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/webpage/common/error.jsp</location> 
  </error-page>


另外,該介面還需要實現一個功能,就是在5秒內,或者使用者點選返回上一頁,使用history.go(-1)類似的這種方式,發現無法實現,

點選回到上一頁就回到登入頁,要麼就是回到空頁面,其實這種系統,完全可以使用關閉Tab頁的方式回到上一頁,因為基本上所以的功能都是開啟Tab頁,

程式碼如下

var activeTab = $(window.parent.document).find("div[class='tab-pane active']");
		if (activeTab && activeTab.length > 0) {
			tabId = activeTab[0].id;
			parent.closeTab(tabId);
		}