2016-09-20 11 views
0

Я хочу вернуть код HTTPStatus динамически, например 400, 400, 404 и т. Д. В соответствии с ошибкой объекта ответа r. Ive ответил на этот вопрос - Programmatically change http response status using spring 3 restful Но это не помогает.Возвращает код состояния HTTP динамически в соответствии с запросом с помощью @ExceptionHandler

Ive этот класс контроллера с помощью метода @ExceptionHandler

@ExceptionHandler(CustomException.class) 
    @ResponseBody 
    public ResponseEntity<?> handleException(CustomException e) { 
     return new ResponseEntity<MyErrorResponse>(
       new MyErrorResponse(e.getCode(), ExceptionUtility.getMessage(e.getMessage())), 
       ExceptionUtility.getHttpCode(e.getCode())); 
    } 

ExceptionUtility класс, где я выше использовали два метода = GetMessage и Получить код

public class ExceptionUtility { 
public static String getMessage(String message) { 
     return message; 
    } 

    public static HttpStatus getHttpCode(String code) { 
     return HttpStatus.NOT_FOUND; //how to return status code dynamically here ? 
    } 

Я не хочу, чтобы проверить в если условие и возвращает код ответа соответственно, есть ли другой лучший подход для этого.

ответ

0

Вам нужно определить другой обработчик исключений для различных исключений, а затем использовать @ResponseStatus, как показано ниже:

@ResponseStatus(HttpStatus.UNAUTHORIZED) 
    @ExceptionHandler({ UnAuthorizedException.class }) 
    public @ResponseBody ExceptionResponse unAuthorizedRequestException(final Exception exception) { 

     return response; 
    } 

@ResponseStatus(HttpStatus.CONFLICT) 
    @ExceptionHandler({ DuplicateDataException.class }) 
    public @ResponseBody ExceptionResponse DuplicateDataRequestException(final Exception exception) { 

     return response; 
    } 

@ResponseStatus(HttpStatus.BAD_REQUEST) 
    @ExceptionHandler({ InvalidException.class }) 
    public @ResponseBody ExceptionResponse handleInvalidException(final Exception exception) { 

     return response; 
    } 
+0

не существует лучшего способа, чем это? – user2340345

+0

Вот как работает Spring Exception Handler. Если вы используете весну, вы можете пойти с этим. – Suraj