对于我所有的 RestControllers 处理程序,它们都返回一个子类型MyResponseType
,我想编写一个 SpringResponseBodyAdvice
来操作基于 some 的响应@ModelAttribute
。但是,我不知道如何访问ModelView
这个地方。
@ControllerAdvice
public class MyGoldenAdvice implements ResponseBodyAdvice<MyResponseType> {
@Override
public boolean supports(final MethodParameter returnType, final Class<? extends HttpMessageConverter<?>> converterType) {
return true;
}
@Override
public RepresentationModel<?> beforeBodyWrite(
final MyResponseType body,
final MethodParameter returnType,
final MediaType selectedContentType,
final Class<? extends HttpMessageConverter<?>> selectedConverterType,
final ServerHttpRequest request,
final ServerHttpResponse response) {
// here I would like to access the ModelView
return body;
}
}
不幸的是,由于我必须实现接口ResponseBodyAdvice
,所以我不能有@ModelAttribute
参数。
当然,我也可以使用拦截器。但是,响应已经写入,因此我只能操作MyResponseType
实例的 JSON。
任何想法?