diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/result/view/HttpMessageWriterView.java b/spring-webflux/src/main/java/org/springframework/web/reactive/result/view/HttpMessageWriterView.java index 7e4108d182..d06ae82158 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/result/view/HttpMessageWriterView.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/result/view/HttpMessageWriterView.java @@ -117,12 +117,7 @@ public class HttpMessageWriterView implements View { @SuppressWarnings("unchecked") public Mono render(Map model, MediaType contentType, ServerWebExchange exchange) { return getObjectToRender(model) - .map(value -> { - Publisher stream = Mono.justOrEmpty(value); - ResolvableType type = ResolvableType.forClass(value.getClass()); - ServerHttpResponse response = exchange.getResponse(); - return this.writer.write(stream, type, contentType, response, Collections.emptyMap()); - }) + .map(value -> write(value, contentType, exchange)) .orElseGet(() -> exchange.getResponse().setComplete()); } @@ -158,4 +153,12 @@ public class HttpMessageWriterView implements View { return getMessageWriter().canWrite(type, null); } + @SuppressWarnings("unchecked") + private Mono write(T value, MediaType contentType, ServerWebExchange exchange) { + Publisher input = Mono.justOrEmpty(value); + ResolvableType elementType = ResolvableType.forClass(value.getClass()); + return ((HttpMessageWriter) this.writer).write( + input, elementType, contentType, exchange.getResponse(), Collections.emptyMap()); + } + }