[英]How to relay error back to Flex/BlazeDS from Java
我們有一個Flex應用程序通過BlazeDS與Java后端進行通信。
之前,如果發生SQL錯誤,SQL異常將在Flex應用程序中顯示為警報,並且調用CallResponder的錯誤處理程序,通知用戶出現了問題。
Flex代碼:呼叫響應者:
<s:CallResponder id="loginResult" result="loginResult_resultHandler(event)" fault="displayGenericErrorMessage(event)"/>
致電服務:
var authenticationMessage:String = loginResult.lastResult as String;
舊Java代碼:
Map resultSet = simpleJdbcCall.execute();
ArrayList list = (ArrayList) resultSet.get("RESULT_SET");
現在,從上面的代碼可以看出,SQL execute語句不在try-catch塊中(編碼錯誤)。 這實際上不會造成太多麻煩,但我們希望能夠將異常打印到錯誤日志中,並且無論如何將execute語句放在try-catch塊中是正確的。 所以,代碼變成如下:
新的Java代碼:
ArrayList list = new ArrayList();
try {
Map resultSet = simpleJdbcCall.execute();
list = (ArrayList) resultSet.get("RESULT_SET");
}
catch (Exception e) {
logger.error(e.getMessage());
}
之前(沒有try-catch塊),如果發生異常,則異常的消息被傳遞回Flex,在那里它被顯示為警報並且調用了CallResponder的錯誤處理程序。 我們不一定希望將異常顯示為警報但是調用故障處理程序是好的,因為它告訴用戶出現了問題。
現在(使用try-catch塊),如果發生異常,則會根據需要將異常放到日志中,但不會調用CallResponder的錯誤處理程序。 Flex認為服務成功返回,其null
,這是不正確的。
有沒有其他方法向Flex表明調用不成功,並且應該調用錯誤處理程序而不是刪除try-catch塊?
提前致謝。
只需在服務器端登錄之后重新拋出異常,它就像以前一樣適用於Flex前端。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.