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.AbstractJackson2View
- org.springframework.web.servlet.view.json.MappingJackson2JsonView
- All Implemented Interfaces:
Aware,BeanNameAware,ApplicationContextAware,ServletContextAware,View
public class MappingJackson2JsonView extends AbstractJackson2View
Spring MVCViewthat renders JSON content by serializing the model for the current request using Jackson 2'sObjectMapper.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).The default constructor uses the default configuration provided by
Jackson2ObjectMapperBuilder.Compatible with Jackson 2.6 and higher, as of Spring 4.3.
- Since:
- 3.1.2
- Author:
- Jeremy Grelle, Arjen Poutsma, Rossen Stoyanchev, Juergen Hoeller, Sebastien Deleuze
Field Summary
Fields Modifier and Type Field Description static StringDEFAULT_CONTENT_TYPEDefault content type: "application/json".static StringDEFAULT_JSONP_CONTENT_TYPEDeprecated.Will be removed as of Spring Framework 5.1, use CORS instead.Fields inherited from class org.springframework.web.servlet.view.json.AbstractJackson2View
updateContentLength
Fields inherited from class org.springframework.context.support.ApplicationObjectSupport
logger
Fields inherited from interface org.springframework.web.servlet.View
PATH_VARIABLES, RESPONSE_STATUS_ATTRIBUTE, SELECTED_CONTENT_TYPE
Constructor Summary
Constructors Constructor Description MappingJackson2JsonView()Construct a newMappingJackson2JsonViewusing default configuration provided byJackson2ObjectMapperBuilderand setting the content type toapplication/json.MappingJackson2JsonView(ObjectMapper objectMapper)Construct a newMappingJackson2JsonViewusing the providedObjectMapperand setting the content type toapplication/json.
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected ObjectfilterAndWrapModel(Map<String,Object> model, HttpServletRequest request)Filter and optionally wrap the model inMappingJacksonValuecontainer.protected ObjectfilterModel(Map<String,Object> model)Filter out undesired attributes from the given model.Set<String>getModelKeys()Return the attributes in the model that should be rendered by this view.protected booleanisValidJsonpQueryParam(String value)Deprecated.Will be removed as of Spring Framework 5.1, use CORS instead.voidsetExtractValueFromSingleKeyModel(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.voidsetJsonpParameterNames(Set<String> jsonpParameterNames)Deprecated.Will be removed as of Spring Framework 5.1, use CORS instead.voidsetJsonPrefix(String jsonPrefix)Specify a custom prefix to use for this view's JSON output.voidsetModelKey(String modelKey)Set the attribute in the model that should be rendered by this view.voidsetModelKeys(Set<String> modelKeys)Set the attributes in the model that should be rendered by this view.voidsetPrefixJson(boolean prefixJson)Indicates whether the JSON output by this view should be prefixed with ")]}', ".protected voidsetResponseContentType(HttpServletRequest request, HttpServletResponse response)Set the content type of the response to the configuredcontent typeunless theView.SELECTED_CONTENT_TYPErequest attribute is present and set to a concrete media type.protected voidwritePrefix(JsonGenerator generator, Object object)Write a prefix before the main content.protected voidwriteSuffix(JsonGenerator generator, Object object)Write a suffix after the main content.Methods inherited from class org.springframework.web.servlet.view.json.AbstractJackson2View
getEncoding, getObjectMapper, prepareResponse, renderMergedOutputModel, setDisableCaching, setEncoding, setObjectMapper, setPrettyPrint, setUpdateContentLength, writeContent
Methods inherited from class org.springframework.web.servlet.view.AbstractView
addStaticAttribute, createMergedOutputModel, createRequestContext, createTemporaryOutputStream, exposeModelAsRequestAttributes, generatesDownloadContent, getAttributesMap, getBeanName, getContentType, getRequestContextAttribute, getRequestToExpose, getStaticAttributes, isExposePathVariables, render, setAttributes, setAttributesCSV, setAttributesMap, setBeanName, setContentType, setExposeContextBeansAsAttributes, setExposedContextBeanNames, 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
Field Detail
DEFAULT_CONTENT_TYPE
public static final String DEFAULT_CONTENT_TYPE
Default content type: "application/json". Overridable throughAbstractView.setContentType(java.lang.String).- See Also:
- Constant Field Values
DEFAULT_JSONP_CONTENT_TYPE
@Deprecated public static final String DEFAULT_JSONP_CONTENT_TYPE
Deprecated.Will be removed as of Spring Framework 5.1, use CORS instead.Default content type for JSONP: "application/javascript".- See Also:
- Constant Field Values
Constructor Detail
MappingJackson2JsonView
public MappingJackson2JsonView()
Construct a newMappingJackson2JsonViewusing default configuration provided byJackson2ObjectMapperBuilderand setting the content type toapplication/json.
MappingJackson2JsonView
public MappingJackson2JsonView(ObjectMapper objectMapper)
Construct a newMappingJackson2JsonViewusing the providedObjectMapperand setting the content type toapplication/json.- Since:
- 4.2.1
Method Detail
setJsonPrefix
public void setJsonPrefix(String jsonPrefix)
Specify a custom prefix to use for this view's JSON output. Default is none.- See Also:
setPrefixJson(boolean)
setPrefixJson
public void setPrefixJson(boolean prefixJson)
Indicates whether the JSON output by this view should be prefixed with ")]}', ". Default isfalse.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 should be stripped before parsing the string as JSON.
- See Also:
setJsonPrefix(java.lang.String)
setModelKey
public void setModelKey(String modelKey)
Set the attribute in the model that should be rendered by this view. When set, all other model attributes will be ignored.- Specified by:
setModelKeyin classAbstractJackson2View
setModelKeys
public void setModelKeys(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.
getModelKeys
public final Set<String> getModelKeys()
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
MappingJackson2HttpMessageConverterwith an@ResponseBodyrequest-handling method.Default is
false.
setJsonpParameterNames
@Deprecated public void setJsonpParameterNames(Set<String> jsonpParameterNames)
Deprecated.Will be removed as of Spring Framework 5.1, use CORS instead.Set JSONP request parameter names. Each time a request has one of those parameters, the resulting JSON will be wrapped into a function named as specified by the JSONP request parameter value.The parameter names configured by default are "jsonp" and "callback".
- Since:
- 4.1
- See Also:
- JSONP Wikipedia article
isValidJsonpQueryParam
@Deprecated protected boolean isValidJsonpQueryParam(String value)
Deprecated.Will be removed as of Spring Framework 5.1, use CORS instead.Validate the jsonp query parameter value. The default implementation returns true if it consists of digits, letters, or "_" and ".". Invalid parameter values are ignored.- Parameters:
value- the query param value, nevernull- Since:
- 4.1.8
filterModel
protected Object filterModel(Map<String,Object> model)
Filter out undesired attributes from the given model. The return value can be either anotherMapor a single value object.The default implementation removes
BindingResultinstances and entries not included in themodelKeysproperty.- Specified by:
filterModelin classAbstractJackson2View- Parameters:
model- the model, as passed on toAbstractJackson2View.renderMergedOutputModel(java.util.Map<java.lang.String, java.lang.Object>, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)- Returns:
- the value to be rendered
filterAndWrapModel
protected Object filterAndWrapModel(Map<String,Object> model, HttpServletRequest request)
Description copied from class:AbstractJackson2ViewFilter and optionally wrap the model inMappingJacksonValuecontainer.- Overrides:
filterAndWrapModelin classAbstractJackson2View- Parameters:
model- the model, as passed on toAbstractJackson2View.renderMergedOutputModel(java.util.Map<java.lang.String, java.lang.Object>, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)request- current HTTP request- Returns:
- the wrapped or unwrapped value to be rendered
writePrefix
protected void writePrefix(JsonGenerator generator, Object object) throws IOException
Description copied from class:AbstractJackson2ViewWrite a prefix before the main content.- Overrides:
writePrefixin classAbstractJackson2View- Parameters:
generator- the generator to use for writing content.object- the object to write to the output message.- Throws:
IOException
writeSuffix
protected void writeSuffix(JsonGenerator generator, Object object) throws IOException
Description copied from class:AbstractJackson2ViewWrite a suffix after the main content.- Overrides:
writeSuffixin classAbstractJackson2View- Parameters:
generator- the generator to use for writing content.object- the object to write to the output message.- Throws:
IOException
setResponseContentType
protected void setResponseContentType(HttpServletRequest request, HttpServletResponse response)
Description copied from class:AbstractViewSet the content type of the response to the configuredcontent typeunless theView.SELECTED_CONTENT_TYPErequest attribute is present and set to a concrete media type.- Overrides:
setResponseContentTypein classAbstractView