【问题标题】:How to relay error back to Flex/BlazeDS from Java如何将错误从 Java 中继回 Flex/BlazeDS
【发布时间】:2013-01-16 11:30:39
【问题描述】:

我们有一个 Flex 应用程序通过 BlazeDS 与 Java 后端通信。

之前,如果发生 SQL 错误,SQL 异常将在 Flex 应用程序中显示为警报,并调用 CallResponder 的故障处理程序,通知用户出现问题。

弹性代码: 呼叫响应者:

<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 执行语句不在 try-catch 块内(编码错误)。这实际上不会造成太多麻烦,但我们希望能够将异常打印到错误日志中,并且无论如何将执行语句放在 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 值。

除了删除 try-catch 块之外,还有其他方法向 Flex 指示调用不成功并且应该调用故障处理程序吗?

提前致谢。

【问题讨论】:

    标签: java apache-flex blazeds


    【解决方案1】:

    只需在异常登录到服务器端后重新抛出异常,它就会像以前一样正确传递给 Flex 前端。

    【讨论】:

    • 谢谢。编辑了您的答案,包括需要在方法签名中添加 throws,以防它不存在
    猜你喜欢
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 2010-11-14
    • 1970-01-01
    相关资源
    最近更新 更多