Top Description Fields Constructors Methods
org.springframework.web.reactive.result.view

public Class ViewResolutionResultHandler

extends HandlerResultHandlerSupport
implements HandlerResultHandler, Ordered
Class Inheritance
All Implemented Interfaces
org.springframework.core.Ordered, org.springframework.web.reactive.HandlerResultHandler
Imports
java.util.ArrayList, .Collections, .List, .Locale, .Map, .Optional, reactor.core.publisher.Flux, .Mono, org.springframework.beans.BeanUtils, org.springframework.context.i18n.LocaleContextHolder, org.springframework.core.Conventions, .MethodParameter, .Ordered, .ReactiveAdapter, .ReactiveAdapterRegistry, .ResolvableType, org.springframework.core.annotation.AnnotationAwareOrderComparator, org.springframework.http.HttpStatusCode, .MediaType, org.springframework.lang.Nullable, org.springframework.ui.Model, org.springframework.util.ClassUtils, .StringUtils, org.springframework.web.bind.annotation.ModelAttribute, org.springframework.web.reactive.BindingContext, .HandlerResult, .HandlerResultHandler, org.springframework.web.reactive.accept.RequestedContentTypeResolver, org.springframework.web.reactive.result.HandlerResultHandlerSupport, org.springframework.web.server.NotAcceptableStatusException, .ServerWebExchange

HandlerResultHandler that encapsulates the view resolution algorithm supporting the following return types:

A String-based view name is resolved through the configured ViewResolver instances into a View to use for rendering. If a view is left unspecified (e.g. by returning null or a model-related return value), a default view name is selected.

By default this resolver is ordered at Ordered#LOWEST_PRECEDENCE and generally needs to be late in the order since it interprets any String return value as a view name or any non-simple value type as a model attribute while other result handlers may interpret the same otherwise based on the presence of annotations, e.g. for @ResponseBody.

Author
Rossen Stoyanchev
Since
5.0

Field Summary

Modifier and TypeField and Description
private final List<View>
private static final Object
private static final Mono<Object>
private final List<ViewResolver>
Inherited from org.springframework.web.reactive.result.HandlerResultHandlerSupport:
logger

Constructor Summary

AccessConstructor and Description
public
ViewResolutionResultHandler(List<ViewResolver>
the resolver to use
viewResolvers
,
RequestedContentTypeResolver
to determine the requested content type
contentTypeResolver
)

Basic constructor with a default ReactiveAdapterRegistry.

public
ViewResolutionResultHandler(List<ViewResolver>
the view resolver to use
viewResolvers
,
RequestedContentTypeResolver
to determine the requested content type
contentTypeResolver
,
ReactiveAdapterRegistry
for adaptation to reactive types
registry
)

Constructor with an ReactiveAdapterRegistry instance.

Method Summary

Modifier and TypeMethod and Description
private String
getDefaultViewName(ServerWebExchange exchange)

Select a default view name when a controller did not specify it.

public List<View>
getDefaultViews()

Return the configured default View's.

private List<MediaType>
private String
public List<ViewResolver>
getViewResolvers()

Return a read-only list of view resolvers.

public Mono<Void>
handleResult(ServerWebExchange
current server exchange
exchange
,
HandlerResult
the result from the handling
result
)

Implements org.springframework.web.reactive.HandlerResultHandler.handleResult.

Process the given result modifying response headers and/or writing data to the response.

private boolean
private Mono<? extends Void>
render(List<View> views, Map<String, Object> model, BindingContext bindingContext, ServerWebExchange exchange)

private Mono<? extends Void>
renderWith(View view, Map<String, Object> model, MediaType mediaType, ServerWebExchange exchange, BindingContext bindingContext)

private Mono<List<View>>
resolveViews(String viewName, Locale locale)

public void
setDefaultViews(List<View> defaultViews)

Set the default views to consider always when resolving view names and trying to satisfy the best matching content type.

public boolean
supports(HandlerResult
the result object to check
result
)

Implements org.springframework.web.reactive.HandlerResultHandler.supports.

Whether this handler supports the given HandlerResult.

Inherited from org.springframework.web.reactive.result.HandlerResultHandlerSupport:
getAdaptergetAdapterRegistrygetContentTypeResolvergetOrderselectMediaTypeselectMediaTypesetOrder

Field Detail

defaultViewsback to summary
private final List<View> defaultViews
NO_VALUEback to summary
private static final Object NO_VALUE
NO_VALUE_MONOback to summary
private static final Mono<Object> NO_VALUE_MONO
viewResolversback to summary
private final List<ViewResolver> viewResolvers

Constructor Detail

ViewResolutionResultHandlerback to summary
public ViewResolutionResultHandler(List<ViewResolver> viewResolvers, RequestedContentTypeResolver contentTypeResolver)

Basic constructor with a default ReactiveAdapterRegistry.

Parameters
viewResolvers:List<ViewResolver>

the resolver to use

contentTypeResolver:RequestedContentTypeResolver

to determine the requested content type

ViewResolutionResultHandlerback to summary
public ViewResolutionResultHandler(List<ViewResolver> viewResolvers, RequestedContentTypeResolver contentTypeResolver, ReactiveAdapterRegistry registry)

Constructor with an ReactiveAdapterRegistry instance.

Parameters
viewResolvers:List<ViewResolver>

the view resolver to use

contentTypeResolver:RequestedContentTypeResolver

to determine the requested content type

registry:ReactiveAdapterRegistry

for adaptation to reactive types

Method Detail

getDefaultViewNameback to summary
private String getDefaultViewName(ServerWebExchange exchange)

Select a default view name when a controller did not specify it. Use the request path the leading and trailing slash stripped.

getDefaultViewsback to summary
public List<View> getDefaultViews()

Return the configured default View's.

getMediaTypesback to summary
private List<MediaType> getMediaTypes(List<View> views)
getNameForReturnValueback to summary
private String getNameForReturnValue(MethodParameter returnType)
getViewResolversback to summary
public List<ViewResolver> getViewResolvers()

Return a read-only list of view resolvers.

handleResultback to summary
public Mono<Void> handleResult(ServerWebExchange exchange, HandlerResult result)

Implements org.springframework.web.reactive.HandlerResultHandler.handleResult.

Doc from org.springframework.web.reactive.HandlerResultHandler.handleResult.

Process the given result modifying response headers and/or writing data to the response.

Parameters
exchange:ServerWebExchange

current server exchange

result:HandlerResult

the result from the handling

Returns:Mono<Void>

Mono<Void> to indicate when request handling is complete.

Annotations
@Override
@SuppressWarnings:unchecked
hasModelAnnotationback to summary
private boolean hasModelAnnotation(MethodParameter parameter)
renderback to summary
private Mono<? extends Void> render(List<View> views, Map<String, Object> model, BindingContext bindingContext, ServerWebExchange exchange)
renderWithback to summary
private Mono<? extends Void> renderWith(View view, Map<String, Object> model, MediaType mediaType, ServerWebExchange exchange, BindingContext bindingContext)
resolveViewsback to summary
private Mono<List<View>> resolveViews(String viewName, Locale locale)
setDefaultViewsback to summary
public void setDefaultViews(List<View> defaultViews)

Set the default views to consider always when resolving view names and trying to satisfy the best matching content type.

supportsback to summary
public boolean supports(HandlerResult result)

Implements org.springframework.web.reactive.HandlerResultHandler.supports.

Doc from org.springframework.web.reactive.HandlerResultHandler.supports.

Whether this handler supports the given HandlerResult.

Parameters
result:HandlerResult

the result object to check

Returns:boolean

whether this object can use the given result

Annotations
@Override