restygwt - получить исходную ошибку сервера на сайте клиента - PullRequest
0 голосов
/ 16 января 2019

У меня приложение построено на GWT + RestyGWT с Spring

Я пытаюсь сделать удобную обработку исключений на клиентском сайте.

У меня есть метод на стороне сервера, который выдает исключение:

@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 is org.fusesource.restygwt.client.FailedResponseException

1 Ответ

0 голосов
/ 16 января 2019

Вы не можете получить тот же Exception в RestyGWT (это можно сделать с помощью GWT RPC ). Но вы можете обрабатывать исключения единообразно на стороне сервера (в джерси вы можете использовать преобразователь исключений весной, называемый обработчиком исключений) и возвращать ответ об ошибке с известным форматом JSON. Затем вы можете получить этот ответ об ошибке, используя FailedResponseException (это исключение, которое вы получаете прямо сейчас), это исключение содержит ответ, поэтому вы можете сделать MyKnownErrorResponse o = JSON.parse(failedResponseException.getResponse().getText()).

...