diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/result/SimpleResultHandler.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/result/SimpleResultHandler.java index b32a4d0f76..1b9c7b1d61 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/result/SimpleResultHandler.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/result/SimpleResultHandler.java @@ -56,6 +56,13 @@ public class SimpleResultHandler implements Ordered, HandlerResultHandler { } + /** + * Set the order for this result handler relative to others. + *

By default this is set to {@link Ordered#LOWEST_PRECEDENCE} and is + * generally safe to use late in the order since it looks specifically for + * {@code void} or async return types parameterized by {@code void}. + * @param order the order + */ public void setOrder(int order) { this.order = order; } diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/result/view/ViewResolverResultHandler.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/result/view/ViewResolverResultHandler.java index 4b3ed3639a..c858401b23 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/result/view/ViewResolverResultHandler.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/result/view/ViewResolverResultHandler.java @@ -70,6 +70,14 @@ public class ViewResolverResultHandler implements HandlerResultHandler, Ordered return Collections.unmodifiableList(this.viewResolvers); } + /** + * Set the order for this result handler relative to others. + *

By default this is set to {@link Ordered#LOWEST_PRECEDENCE} and + * generally needs to be used late in the order since it interprets any + * String return value as a view name while others may interpret the same + * otherwise based on annotations (e.g. for {@code @ResponseBody}). + * @param order the order + */ public void setOrder(int order) { this.order = order; } @@ -79,7 +87,7 @@ public class ViewResolverResultHandler implements HandlerResultHandler, Ordered return this.order; } - // TODO: Add support for model-related return value (Model, ModelAndView, @ModelAttribute) + // TODO: Support for Model, ModelAndView, @ModelAttribute, Object with no method annotations @Override public boolean supports(HandlerResult result) { diff --git a/spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/RequestMappingIntegrationTests.java b/spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/RequestMappingIntegrationTests.java index 2be8ca1eb1..0e38a43b6b 100644 --- a/spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/RequestMappingIntegrationTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/RequestMappingIntegrationTests.java @@ -415,25 +415,18 @@ public class RequestMappingIntegrationTests extends AbstractHttpHandlerIntegrati new CodecHttpMessageConverter<>(new ByteBufferEncoder(), new ByteBufferDecoder()), new CodecHttpMessageConverter<>(new StringEncoder(), new StringDecoder()), new CodecHttpMessageConverter<>(new JacksonJsonEncoder(), new JacksonJsonDecoder())); - ResponseBodyResultHandler resultHandler = - new ResponseBodyResultHandler(converters, conversionService()); - resultHandler.setOrder(1); - return resultHandler; + return new ResponseBodyResultHandler(converters, conversionService()); } @Bean public SimpleResultHandler simpleHandlerResultHandler() { - SimpleResultHandler resultHandler = new SimpleResultHandler(conversionService()); - resultHandler.setOrder(2); - return resultHandler; + return new SimpleResultHandler(conversionService()); } @Bean public ViewResolverResultHandler viewResolverResultHandler() { List resolvers = Collections.singletonList(freeMarkerViewResolver()); - ViewResolverResultHandler resultHandler = new ViewResolverResultHandler(resolvers, conversionService()); - resultHandler.setOrder(3); - return resultHandler; + return new ViewResolverResultHandler(resolvers, conversionService()); } @Bean