2016-07-23 2 views
4

У меня есть требование отредактировать мой HttpResponse, чтобы добавить значение заголовка. Я искал одну точку для ее реализации и обнаружил, что ResponseBodyadvice будет полезен.Как реализовать ResponseBodyAdvice для всех контроллеров?

Но оба метода, которые перевернули в моем новом классе, никогда не назывались. Не могли бы вы рассказать, пропустили ли я какие-либо конфигурации.

@ControllerAdvice 
public class EditResponseHeader implements ResponseBodyAdvice<object> { 


@Override 
public boolean supports(MethodParameter returnType, 
     Class<? extends HttpMessageConverter<?>> converterType) { 

    return true; 
} 

.... 

@Override 
public Object beforeBodyWrite(Object body, MethodParameter returnType, 
     MediaType selectedContentType, 
     Class<? extends HttpMessageConverter<?>> selectedConverterType, 
     ServerHttpRequest request, ServerHttpResponse response) { 

    .... 

    return body; 
} 

} 
+0

Все мои контроллеры, имеющие @RequestMapping аннотации и аннотация является MVC привода. Я также использую MappingJackson2Json в качестве просмотров по умолчанию – Ultimata

ответ

0

насчет:

@Override 
@ExceptionHandler(Exception.class) 
     public Response<?> beforeBodyWrite(Response<?> body, MethodParameter returnType, 
       MediaType selectedContentType, 
       Class<? extends HttpMessageConverter<?>> selectedConverterType, 
       ServerHttpRequest request, ServerHttpResponse response) { 

      .... 

      return body; 
     } 
+0

Как изменить тип возвращаемого файла beforeBodyWrite на Response из объекта? – Ultimata

+0

Возможно, следующая ссылка поможет вам найти решение. http://stackoverflow.com/questions/21884737/controlleradvice-not-firing –

+2

Когда я пишу какой-либо метод, аннотированный с помощью '@ InitBinder' или' @ ExceptionHandler', тогда он работает нормально, но '@ ExceptionHandler' вызывается только тогда, когда исключение throw и '@ initBinder' вызывается до запуска контроллера. Мое требование - вызывать этот метод после того, как каждый контроллер выполняется не только при вызове исключения. – Ultimata

Смежные вопросы