diff --git a/spring-web/src/main/java/org/springframework/web/bind/support/WebExchangeDataBinder.java b/spring-web/src/main/java/org/springframework/web/bind/support/WebExchangeDataBinder.java index d569239b37..96c7a67cd3 100644 --- a/spring-web/src/main/java/org/springframework/web/bind/support/WebExchangeDataBinder.java +++ b/spring-web/src/main/java/org/springframework/web/bind/support/WebExchangeDataBinder.java @@ -97,7 +97,7 @@ public class WebExchangeDataBinder extends WebDataBinder { Mono> formData = exchange.getFormData(); Mono> multipartData = exchange.getMultipartData(); - return Mono.when(Mono.just(queryParams), formData, multipartData) + return Mono.zip(Mono.just(queryParams), formData, multipartData) .map(tuple -> { Map result = new TreeMap<>(); tuple.getT1().forEach((key, values) -> addBindValue(result, key, values)); diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/InvocableHandlerMethod.java b/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/InvocableHandlerMethod.java index db626080a2..7f7e119568 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/InvocableHandlerMethod.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/InvocableHandlerMethod.java @@ -154,7 +154,7 @@ public class InvocableHandlerMethod extends HandlerMethod { .collect(Collectors.toList()); // Create Mono with array of resolved values... - return Mono.when(argMonos, argValues -> + return Mono.zip(argMonos, argValues -> Stream.of(argValues).map(o -> o != NO_ARG_VALUE ? o : null).toArray()); } catch (Throwable ex) { diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ModelInitializer.java b/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ModelInitializer.java index 0e12132c4c..9ec4e889a6 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ModelInitializer.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ModelInitializer.java @@ -73,7 +73,7 @@ class ModelInitializer { List> resultList = new ArrayList<>(); attributeMethods.forEach(invocable -> resultList.add(invocable.invoke(exchange, bindingContext))); - return Mono.when(resultList, objectArray -> { + return Mono.zip(resultList, objectArray -> { return Arrays.stream(objectArray) .map(object -> (HandlerResult) object) .map(handlerResult -> handleResult(handlerResult, bindingContext)) diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/result/view/AbstractView.java b/spring-webflux/src/main/java/org/springframework/web/reactive/result/view/AbstractView.java index baaf36dc5d..9d5f0c3dad 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/result/view/AbstractView.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/result/view/AbstractView.java @@ -235,7 +235,7 @@ public abstract class AbstractView implements View, ApplicationContextAware { return Mono.empty(); } - return Mono.when(valueMonos, + return Mono.zip(valueMonos, values -> { for (int i=0; i < values.length; i++) { if (values[i] != NO_VALUE) {