簡體   English   中英

如何從Java中將錯誤傳回Flex / BlazeDS

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM