restygwt-在客户端站点上获取原始服务器错误

时间:2019-01-16 12:33:41

标签: java gwt resty-gwt

我有一个基于Spring的GWT + RestyGWT构建的应用程序

我正在尝试在客户端站点上进行一些用户友好的异常处理。

我在服务器端有一些引发异常的方法:

@PostMapping(...)
@Transactional(...)
public long withdraw(@PathVariable(value = "amount) long amount) throws CustomException {
    if (amount < 0) {
        throw new CustomException("Amount is negative");
    }
    account.withdraw(amount);
    return account.balance;
}

它在客户端称为异步,并在此处理:

... new MethodCallback<...>() {
@Override
public void onFailure(Method method, Throwable throwable) {
    // here should be error handling
}

如何获取原始错误消息和类(“金额为负”和CustomException)?我从方法和可抛出变量中得到的全部是:

  • errorCode = 500
  • 响应消息=“内部服务器错误”
  • throwable是org.fusesource.restygwt.client.FailedResponseException

1 个答案:

答案 0 :(得分:1)

您不能在 RestyGWT 中收到相同的Exception(可以使用 GWT RPC 完成)。但是,您可以在服务器端统一处理异常(在泽西岛,您可以在spring中使用异常映射器称为异常处理程序),并以已知的JSON格式返回错误响应。然后,您可以使用FailedResponseException得到此错误响应(这是您现在正在接收的异常),该异常包含响应,因此您可以执行MyKnownErrorResponse o = JSON.parse(failedResponseException.getResponse().getText())