Class AbstractView
java.lang.Object
org.springframework.web.reactive.result.view.AbstractView
- All Implemented Interfaces:
org.springframework.beans.factory.Aware
,org.springframework.beans.factory.BeanNameAware
,org.springframework.context.ApplicationContextAware
,View
- Direct Known Subclasses:
AbstractUrlBasedView
public abstract class AbstractView
extends Object
implements View, org.springframework.beans.factory.BeanNameAware, org.springframework.context.ApplicationContextAware
Base class for
View
implementations.- Since:
- 5.0
- Author:
- Rossen Stoyanchev, Sam Brannen
-
Field Summary
Modifier and TypeFieldDescriptionprotected final Log
Logger that is available to subclasses.static final String
Well-known name for the RequestDataValueProcessor in the bean factory.Fields inherited from interface org.springframework.web.reactive.result.view.View
BINDING_CONTEXT_ATTRIBUTE
-
Constructor Summary
ConstructorDescriptionAbstractView
(org.springframework.core.ReactiveAdapterRegistry reactiveAdapterRegistry) -
Method Summary
Modifier and TypeMethodDescriptionprotected RequestContext
createRequestContext
(org.springframework.web.server.ServerWebExchange exchange, Map<String, Object> model) Create aRequestContext
to expose under the specified attribute name.protected String
org.springframework.context.ApplicationContext
Get the view's name.Get the default charset, used when the content type does not contain one.getModelAttributes
(Map<String, ?> model, org.springframework.web.server.ServerWebExchange exchange) Prepare the model to use for rendering.Get the name of theRequestContext
attribute for this view, if any.protected RequestDataValueProcessor
Get theRequestDataValueProcessor
to use.List<org.springframework.http.MediaType>
Get the configured media types supported by this view.protected final org.springframework.context.ApplicationContext
Obtain theApplicationContext
for actual use.reactor.core.publisher.Mono<Void>
render
(Map<String, ?> model, org.springframework.http.MediaType contentType, org.springframework.web.server.ServerWebExchange exchange) Prepare the model to render.protected abstract reactor.core.publisher.Mono<Void>
renderInternal
(Map<String, Object> renderAttributes, org.springframework.http.MediaType contentType, org.springframework.web.server.ServerWebExchange exchange) Subclasses must implement this method to actually render the view.protected reactor.core.publisher.Mono<Void>
resolveAsyncAttributes
(Map<String, Object> model, org.springframework.web.server.ServerWebExchange exchange) Use the configuredReactiveAdapterRegistry
to adapt asynchronous attributes toMono<T>
orMono<List<T>>
and then wait to resolve them into actual values.void
setApplicationContext
(org.springframework.context.ApplicationContext applicationContext) void
setBeanName
(String beanName) Set the view's name.void
setDefaultCharset
(Charset defaultCharset) Set the default charset for this view, used when the content type does not contain one.void
setRequestContextAttribute
(String requestContextAttribute) Set the name of theRequestContext
attribute for this view.void
setSupportedMediaTypes
(List<org.springframework.http.MediaType> supportedMediaTypes) Set the supported media types for this view.toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.web.reactive.result.view.View
isRedirectView
-
Field Details
-
REQUEST_DATA_VALUE_PROCESSOR_BEAN_NAME
Well-known name for the RequestDataValueProcessor in the bean factory.- See Also:
-
logger
Logger that is available to subclasses.
-
-
Constructor Details
-
AbstractView
public AbstractView() -
AbstractView
public AbstractView(org.springframework.core.ReactiveAdapterRegistry reactiveAdapterRegistry)
-
-
Method Details
-
setSupportedMediaTypes
Set the supported media types for this view.Default is
"text/html;charset=UTF-8"
. -
getSupportedMediaTypes
Get the configured media types supported by this view.- Specified by:
getSupportedMediaTypes
in interfaceView
-
setDefaultCharset
Set the default charset for this view, used when the content type does not contain one.Default is UTF 8.
-
getDefaultCharset
Get the default charset, used when the content type does not contain one. -
setRequestContextAttribute
Set the name of theRequestContext
attribute for this view.Default is none (
null
). -
getRequestContextAttribute
Get the name of theRequestContext
attribute for this view, if any. -
setBeanName
Set the view's name. Helpful for traceability.Framework code must call this when constructing views.
- Specified by:
setBeanName
in interfaceorg.springframework.beans.factory.BeanNameAware
-
getBeanName
Get the view's name.Should never be
null
if the view was correctly configured. -
setApplicationContext
public void setApplicationContext(@Nullable org.springframework.context.ApplicationContext applicationContext) - Specified by:
setApplicationContext
in interfaceorg.springframework.context.ApplicationContextAware
-
getApplicationContext
@Nullable public org.springframework.context.ApplicationContext getApplicationContext() -
obtainApplicationContext
protected final org.springframework.context.ApplicationContext obtainApplicationContext()Obtain theApplicationContext
for actual use.- Returns:
- the
ApplicationContext
(nevernull
) - Throws:
IllegalStateException
- if the ApplicationContext cannot be obtained- See Also:
-
render
public reactor.core.publisher.Mono<Void> render(@Nullable Map<String, ?> model, @Nullable org.springframework.http.MediaType contentType, org.springframework.web.server.ServerWebExchange exchange) Prepare the model to render.- Specified by:
render
in interfaceView
- Parameters:
model
- a map with attribute names as keys and corresponding model objects as values (the map can also benull
in case of an empty model)contentType
- the content type selected to render with, which should match one of thesupported media types
exchange
- the current exchange- Returns:
- a
Mono
that represents when and if rendering succeeds
-
getModelAttributes
protected reactor.core.publisher.Mono<Map<String,Object>> getModelAttributes(@Nullable Map<String, ?> model, org.springframework.web.server.ServerWebExchange exchange) Prepare the model to use for rendering.The default implementation creates a combined output Map that includes model as well as static attributes with the former taking precedence.
-
resolveAsyncAttributes
protected reactor.core.publisher.Mono<Void> resolveAsyncAttributes(Map<String, Object> model, org.springframework.web.server.ServerWebExchange exchange) Use the configuredReactiveAdapterRegistry
to adapt asynchronous attributes toMono<T>
orMono<List<T>>
and then wait to resolve them into actual values. When the returnedMono<Void>
completes, the asynchronous attributes in the model will have been replaced with their corresponding resolved values.- Returns:
- result a
Mono
that completes when the model is ready - Since:
- 5.1.8
-
createRequestContext
protected RequestContext createRequestContext(org.springframework.web.server.ServerWebExchange exchange, Map<String, Object> model) Create aRequestContext
to expose under the specified attribute name.The default implementation creates a standard
RequestContext
instance for the given exchange and model.Can be overridden in subclasses to create custom instances.
- Parameters:
exchange
- the current exchangemodel
- a combined output Map (nevernull
), with dynamic values taking precedence over static attributes- Returns:
- the
RequestContext
instance - See Also:
-
getRequestDataValueProcessor
Get theRequestDataValueProcessor
to use.The default implementation looks in the
ApplicationContext
for aRequestDataValueProcessor
bean with the nameREQUEST_DATA_VALUE_PROCESSOR_BEAN_NAME
.- Returns:
- the
RequestDataValueProcessor
, ornull
if there is none in the application context
-
renderInternal
protected abstract reactor.core.publisher.Mono<Void> renderInternal(Map<String, Object> renderAttributes, @Nullable org.springframework.http.MediaType contentType, org.springframework.web.server.ServerWebExchange exchange) Subclasses must implement this method to actually render the view.- Parameters:
renderAttributes
- combined output Map (nevernull
), with dynamic values taking precedence over static attributescontentType
- the content type selected to render with, which should match one of the supported media typesexchange
- current exchange- Returns:
- a
Mono
that represents when and if rendering succeeds
-
toString
-
formatViewName
-