public class

MappingJacksonJsonView

extends AbstractView
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.MappingJacksonJsonView

Class Overview

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

By default, the entire contents of the model map (with the exception of framework-specific classes) will be encoded as JSON. For cases where the contents of the map need to be filtered, users may specify a specific set of model attributes to encode via the renderedAttributes property.

Summary

Constants
String DEFAULT_CONTENT_TYPE Default content type.
[Expand]
Inherited Constants
From class org.springframework.web.servlet.view.AbstractView
[Expand]
Inherited Fields
From class org.springframework.context.support.ApplicationObjectSupport
From interface org.springframework.web.servlet.View
Public Constructors
MappingJacksonJsonView()
Construct a new JacksonJsonView, setting the content type to application/json.
Public Methods
Set<String> getRenderedAttributes()
Returns the attributes in the model that should be rendered by this view.
void setDisableCaching(boolean disableCaching)
Disables caching of the generated JSON.
void setEncoding(JsonEncoding encoding)
Sets the JsonEncoding for this converter.
void setObjectMapper(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 setRenderedAttributes(Set<String> renderedAttributes)
Sets the attributes in the model that should be rendered by this view.
Protected Methods
Object filterModel(Map<StringObject> model)
Filters out undesired attributes from the given model.
void prepareResponse(HttpServletRequest request, HttpServletResponse response)
Prepare the given response for rendering.
void renderMergedOutputModel(Map<StringObject> model, HttpServletRequest request, HttpServletResponse response)
Subclasses must implement this method to actually render the view.
[Expand]
Inherited Methods
From class org.springframework.web.servlet.view.AbstractView
From class org.springframework.web.context.support.WebApplicationObjectSupport
From class org.springframework.context.support.ApplicationObjectSupport
From class java.lang.Object
From interface org.springframework.beans.factory.BeanNameAware
From interface org.springframework.context.ApplicationContextAware
From interface org.springframework.web.context.ServletContextAware
From interface org.springframework.web.servlet.View

Constants

public static final String DEFAULT_CONTENT_TYPE

Default content type. Overridable as bean property.

Constant Value: "application/json"

Public Constructors

public MappingJacksonJsonView ()

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

Public Methods

public Set<String> getRenderedAttributes ()

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

public void setDisableCaching (boolean disableCaching)

Disables caching of the generated JSON.

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

public void setEncoding (JsonEncoding encoding)

Sets the JsonEncoding for this converter. By default, JsonEncoding#UTF8 UTF-8 is used.

public void setObjectMapper (ObjectMapper objectMapper)

Sets the ObjectMapper for this view. If not set, a default ObjectMapper#ObjectMapper() 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.

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.

public void setRenderedAttributes (Set<String> renderedAttributes)

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

Protected Methods

protected Object filterModel (Map<StringObject> model)

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

Default implementation removes BindingResult instances and entries not included in the renderedAttributes property.

Parameters
model the model, as passed on to renderMergedOutputModel(Map, HttpServletRequest, HttpServletResponse)
Returns
  • the object to be rendered

protected void prepareResponse (HttpServletRequest request, HttpServletResponse response)

Prepare the given response for rendering.

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

Parameters
request current HTTP request
response current HTTP response

protected void renderMergedOutputModel (Map<StringObject> model, HttpServletRequest request, HttpServletResponse response)

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.

Parameters
model combined output Map (never null), with dynamic values taking precedence over static attributes
request current HTTP request
response current HTTP response
Throws
Exception