Возврат объекта ответа из обработчика исключений [Spring]JAVA

Программисты JAVA общаются здесь
Anonymous
Возврат объекта ответа из обработчика исключений [Spring]

Сообщение Anonymous »

Я использую следующий код для обработки всех исключений типа RuntimeException в классе, помеченном @ControllerAdvice

Код: Выделить всё

@ExceptionHandler(RuntimeException.class)
public ResponseEntity RuntimeExceptionHandler(RuntimeException e) throws JSONException {
JSONObject response = new JSONObject();
response.put("message", e.getMessage());
return new ResponseEntity(response, HttpStatus.BAD_REQUEST);
}
В случае ValidationException он возвращает клиенту следующий ответ:

Код: Выделить всё

{
"timestamp": 1496377230943,
"status": 500,
"error": "Internal Server Error",
"exception": "javax.validation.ValidationException",
"message": "Name does not meet expectations",
"path": "/signup"
}
Это не то, чего я ожидал. Код состояния не BAD_REQUEST, а json отличается от ответа.

Все работает нормально, если я изменю JSONObject на String и передам строковое сообщение вместо объекта json. Я также поставил точку останова перед оператором return, и ответ выглядит нормально.

Примечание. Здесь есть еще одно сообщение, которое:
  • Нет принятого ответа.
  • Аннотирует метод с помощью @ResponseBody, чего я не делал.
  • Не использует JSONObject


Подробнее здесь: https://stackoverflow.com/questions/443 ... ler-spring

Вернуться в «JAVA»