org.springframework.web.reactive.result.view

## Class HttpMessageWriterView

- java.lang.Object
- - org.springframework.web.reactive.result.view.HttpMessageWriterView

- All Implemented Interfaces:
    View

      public class HttpMessageWriterView
      extends Object
      implements View

  `View` that writes model attribute(s) with an `HttpMessageWriter`.
  Since:
    5.0
  Author:
    Rossen Stoyanchev

- - ### Field Summary

    - ### Fields inherited from interface org.springframework.web.reactive.result.view.View

      `BINDING_CONTEXT_ATTRIBUTE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `HttpMessageWriterView(Encoder<?> encoder)` Constructor with an `Encoder`.
    `HttpMessageWriterView(HttpMessageWriter<?> writer)` Constructor with a fully initialized `HttpMessageWriter`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `HttpMessageWriter<?>` | `getMessageWriter()` Return the configured message writer.
    `Set<String>` | `getModelKeys()` Return the configured model keys.
    `List<MediaType>` | `getSupportedMediaTypes()` Return the list of media types this View supports, or an empty list.
    `reactor.core.publisher.Mono<Void>` | `render(Map<String,?> model, MediaType contentType, ServerWebExchange exchange)` Render the view based on the given `HandlerResult`.
    `void` | `setModelKeys(Set<String> modelKeys)` Set the attributes in the model that should be rendered by this view.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.springframework.web.reactive.result.view.View

      `isRedirectView`

- - ### Constructor Detail

    - #### HttpMessageWriterView

          public HttpMessageWriterView(Encoder<?> encoder)

      Constructor with an `Encoder`.

    - #### HttpMessageWriterView

          public HttpMessageWriterView(HttpMessageWriter<?> writer)

      Constructor with a fully initialized `HttpMessageWriter`.

  - ### Method Detail

    - #### getMessageWriter

          public HttpMessageWriter<?> getMessageWriter()

      Return the configured message writer.

    - #### getSupportedMediaTypes

          public List<MediaType> getSupportedMediaTypes()

      Return the list of media types this View supports, or an empty list.

      The implementation of this method for `HttpMessageWriterView` delegates to `HttpMessageWriter.getWritableMediaTypes()`.

      Specified by:
        `getSupportedMediaTypes` in interface `View`

    - #### setModelKeys

          public void setModelKeys(@Nullable
                                   Set<String> modelKeys)

      Set the attributes in the model that should be rendered by this view. When set, all other model attributes will be ignored. The matching attributes are further narrowed with `HttpMessageWriter.canWrite(org.springframework.core.ResolvableType, org.springframework.http.MediaType)`. The matching attributes are processed as follows:
      - 0: nothing is written to the response body.
      - 1: the matching attribute is passed to the writer.
      - 2..N: if the writer supports `Map`, write all matches; otherwise raise an `IllegalStateException`.

    - #### getModelKeys

          public final Set<String> getModelKeys()

      Return the configured model keys.

    - #### render

          public reactor.core.publisher.Mono<Void> render(@Nullable
                                                          Map<String,?> model,
                                                          @Nullable
                                                          MediaType contentType,
                                                          ServerWebExchange exchange)

      Description copied from interface: `View`
      Render the view based on the given `HandlerResult`. Implementations can access and use the model or only a specific attribute in it.
      Specified by:
        `render` in interface `View`
      Parameters:
        `model` - a Map with name Strings as keys and corresponding model objects as values (Map can also be `null` in case of empty model)
        `contentType` - the content type selected to render with which should match one of the `supported media types`.
        `exchange` - the current exchange
      Returns:
        `Mono` to represent when and if rendering succeeds