Overview | Package | Class | Tree | Deprecated | Index | Help
| Spring Framework
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.springframework.web.servlet.view.json
Class MappingJackson2JsonView

    java.lang.Object
      org.springframework.context.support.ApplicationObjectSupport
          org.springframework.web.context.support.WebApplicationObjectSupport
              org.springframework.web.servlet.view.AbstractView
                  org.springframework.web.servlet.view.json.MappingJackson2JsonView

All Implemented Interfaces:
  Aware, BeanNameAware, ApplicationContextAware, ServletContextAware, View

    public class MappingJackson2JsonView

extends AbstractView

Spring MVC `View` that renders JSON content by serializing the model for the current request using Jackson 2's `ObjectMapper`.

By default, the entire contents of the model map (with the exception of framework-specific classes) will be encoded as JSON. If the model contains only one key, you can have it extracted encoded as JSON alone via `setExtractValueFromSingleKeyModel(boolean)`.

Since:
  3.2
Author:
  Jeremy Grelle, Arjen Poutsma, Rossen Stoyanchev
See Also:
  `MappingJackson2HttpMessageConverter`

Field Summary
`static java.lang.String` | `DEFAULT_CONTENT_TYPE` Default content type.

Fields inherited from class org.springframework.context.support.ApplicationObjectSupport
`logger`

Fields inherited from interface org.springframework.web.servlet.View
`PATH_VARIABLES, RESPONSE_STATUS_ATTRIBUTE`

Constructor Summary
`MappingJackson2JsonView()` Construct a new `JacksonJsonView`, setting the content type to `application/json`.

Method Summary
`protected java.lang.Object` | `filterModel(java.util.Map<java.lang.String,java.lang.Object> model)` Filters out undesired attributes from the given model.
`java.util.Set<java.lang.String>` | `getModelKeys()` Return the attributes in the model that should be rendered by this view.
`java.util.Set<java.lang.String>` | `getRenderedAttributes()` Deprecated. use `getModelKeys()` instead
`protected void` | `prepareResponse(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)` Prepare the given response for rendering.
`protected void` | `renderMergedOutputModel(java.util.Map<java.lang.String,java.lang.Object> model, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)` Subclasses must implement this method to actually render the view.
`void` | `setDisableCaching(boolean disableCaching)` Disables caching of the generated JSON.
`void` | `setEncoding(com.fasterxml.jackson.core.JsonEncoding encoding)` Set the `JsonEncoding` for this converter.
`void` | `setExtractValueFromSingleKeyModel(boolean extractValueFromSingleKeyModel)` Set whether to serialize models containing a single attribute as a map or whether to extract the single value from the model and serialize it directly.
`void` | `setModelKey(java.lang.String modelKey)` Set the attribute in the model that should be rendered by this view.
`void` | `setModelKeys(java.util.Set<java.lang.String> modelKeys)` Set the attributes in the model that should be rendered by this view.
`void` | `setObjectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper)` Sets the `ObjectMapper` for this view.
`void` | `setPrefixJson(boolean prefixJson)` Indicates whether the JSON output by this view should be prefixed with `"{} && "`.
`void` | `setPrettyPrint(boolean prettyPrint)` Whether to use the `DefaultPrettyPrinter` when writing JSON.
`void` | `setRenderedAttributes(java.util.Set<java.lang.String> renderedAttributes)` Deprecated. use `setModelKeys(Set)` instead
`void` | `setUpdateContentLength(boolean updateContentLength)` Whether to update the 'Content-Length' header of the response.

Methods inherited from class org.springframework.web.servlet.view.AbstractView
`addStaticAttribute, createMergedOutputModel, createRequestContext, createTemporaryOutputStream, exposeModelAsRequestAttributes, generatesDownloadContent, getAttributesMap, getBeanName, getContentType, getRequestContextAttribute, getStaticAttributes, isExposePathVariables, render, setAttributes, setAttributesCSV, setAttributesMap, setBeanName, setContentType, setExposePathVariables, setRequestContextAttribute, toString, writeToResponse`

Methods inherited from class org.springframework.web.context.support.WebApplicationObjectSupport
`getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext`

Methods inherited from class org.springframework.context.support.ApplicationObjectSupport
`getApplicationContext, getMessageSourceAccessor, initApplicationContext, requiredContextClass, setApplicationContext`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### DEFAULT_CONTENT_TYPE

    public static final java.lang.String DEFAULT_CONTENT_TYPE

  Default content type. Overridable as bean property.

  See Also:
    Constant Field Values

Constructor Detail

### MappingJackson2JsonView

    public MappingJackson2JsonView()

  Construct a new `JacksonJsonView`, setting the content type to `application/json`.

Method Detail

### setObjectMapper

    public void setObjectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper)

  Sets the `ObjectMapper` for this view. If not set, a default `ObjectMapper` is used.

  Setting a custom-configured `ObjectMapper` is one way to take further control of the JSON serialization process. For example, an extended `SerializerFactory` can be configured that provides custom serializers for specific types. The other option for refining the serialization process is to use Jackson's provided annotations on the types to be serialized, in which case a custom-configured ObjectMapper is unnecessary.

### setEncoding

    public void setEncoding(com.fasterxml.jackson.core.JsonEncoding encoding)

  Set the `JsonEncoding` for this converter. By default, UTF-8 is used.

### setPrefixJson

    public void setPrefixJson(boolean prefixJson)

  Indicates whether the JSON output by this view should be prefixed with `"{} && "`. Default is false.

  Prefixing the JSON string in this manner is used to help prevent JSON Hijacking. The prefix renders the string syntactically invalid as a script so that it cannot be hijacked. This prefix does not affect the evaluation of JSON, but if JSON validation is performed on the string, the prefix would need to be ignored.

### setPrettyPrint

    public void setPrettyPrint(boolean prettyPrint)

  Whether to use the `DefaultPrettyPrinter` when writing JSON. This is a shortcut for setting up an `ObjectMapper` as follows:

       ObjectMapper mapper = new ObjectMapper();
       mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
       converter.setObjectMapper(mapper);

  The default value is `false`.

### setModelKey

    public void setModelKey(java.lang.String modelKey)

  Set the attribute in the model that should be rendered by this view. When set, all other model attributes will be ignored.

### setModelKeys

    public void setModelKeys(java.util.Set<java.lang.String> modelKeys)

  Set the attributes in the model that should be rendered by this view. When set, all other model attributes will be ignored.

### getModelKeys

    public java.util.Set<java.lang.String> getModelKeys()

  Return the attributes in the model that should be rendered by this view.

### setRenderedAttributes

    @Deprecated
    public void setRenderedAttributes(java.util.Set<java.lang.String> renderedAttributes)

  Deprecated. use `setModelKeys(Set)` instead

  Set the attributes in the model that should be rendered by this view. When set, all other model attributes will be ignored.

### getRenderedAttributes

    @Deprecated
    public java.util.Set<java.lang.String> getRenderedAttributes()

  Deprecated. use `getModelKeys()` instead

  Return the attributes in the model that should be rendered by this view.

### setExtractValueFromSingleKeyModel

    public void setExtractValueFromSingleKeyModel(boolean extractValueFromSingleKeyModel)

  Set whether to serialize models containing a single attribute as a map or whether to extract the single value from the model and serialize it directly.

  The effect of setting this flag is similar to using `MappingJacksonHttpMessageConverter` with an `@ResponseBody` request-handling method.

  Default is `false`.

### setDisableCaching

    public void setDisableCaching(boolean disableCaching)

  Disables caching of the generated JSON.

  Default is `true`, which will prevent the client from caching the generated JSON.

### setUpdateContentLength

    public void setUpdateContentLength(boolean updateContentLength)

  Whether to update the 'Content-Length' header of the response. When set to `true`, the response is buffered in order to determine the content length and set the 'Content-Length' header of the response.

  The default setting is `false`.

### prepareResponse

    protected void prepareResponse(javax.servlet.http.HttpServletRequest request,
                                   javax.servlet.http.HttpServletResponse response)

  Description copied from class: `AbstractView`
  Prepare the given response for rendering.

  The default implementation applies a workaround for an IE bug when sending download content via HTTPS.

  Overrides:
    `prepareResponse` in class `AbstractView`
  Parameters:
    `request` - current HTTP request
    `response` - current HTTP response

### renderMergedOutputModel

    protected void renderMergedOutputModel(java.util.Map<java.lang.String,java.lang.Object> model,
                                           javax.servlet.http.HttpServletRequest request,
                                           javax.servlet.http.HttpServletResponse response)
                                    throws java.lang.Exception

  Description copied from class: `AbstractView`
  Subclasses must implement this method to actually render the view.

  The first step will be preparing the request: In the JSP case, this would mean setting model objects as request attributes. The second step will be the actual rendering of the view, for example including the JSP via a RequestDispatcher.

  Specified by:
    `renderMergedOutputModel` in class `AbstractView`
  Parameters:
    `model` - combined output Map (never `null`), with dynamic values taking precedence over static attributes
    `request` - current HTTP request
    `response` - current HTTP response
  Throws:
    `java.lang.Exception` - if rendering failed

### filterModel

    protected java.lang.Object filterModel(java.util.Map<java.lang.String,java.lang.Object> model)

  Filters out undesired attributes from the given model. The return value can be either another `Map` or a single value object.

  The default implementation removes `BindingResult` instances and entries not included in the `renderedAttributes` property.

  Parameters:
    `model` - the model, as passed on to `renderMergedOutputModel(java.util.Map, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)`
  Returns:
    the object to be rendered

Overview | Package | Class | Tree | Deprecated | Index | Help
| Spring Framework
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD