diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/AbstractNamedValueArgumentResolver.java b/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/AbstractNamedValueArgumentResolver.java index 79565cce4f14..969188086e54 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/AbstractNamedValueArgumentResolver.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/AbstractNamedValueArgumentResolver.java @@ -205,23 +205,18 @@ private Object applyConversion(@Nullable Object value, NamedValueInfo namedValue */ private Mono getDefaultValue(NamedValueInfo namedValueInfo, MethodParameter parameter, BindingContext bindingContext, Model model, ServerWebExchange exchange) { - - Object value = null; - try { + return Mono.fromSupplier(() -> { + Object value = null; if (namedValueInfo.defaultValue != null) { value = resolveStringValue(namedValueInfo.defaultValue); - } - else if (namedValueInfo.required && !parameter.isOptional()) { + } else if (namedValueInfo.required && !parameter.isOptional()) { handleMissingValue(namedValueInfo.name, parameter, exchange); } value = handleNullValue(namedValueInfo.name, value, parameter.getNestedParameterType()); value = applyConversion(value, namedValueInfo, parameter, bindingContext, exchange); handleResolvedValue(value, namedValueInfo.name, parameter, model, exchange); - return Mono.justOrEmpty(value); - } - catch (Throwable ex) { - return Mono.error(ex); - } + return value; + }); } /**