Class AbstractJackson2View
- All Implemented Interfaces:
- Aware,- BeanNameAware,- ApplicationContextAware,- ServletContextAware,- View
- Direct Known Subclasses:
- MappingJackson2JsonView,- MappingJackson2XmlView
AbstractView implementations.
 Compatible with Jackson 2.9 to 2.12, as of Spring 5.3.
- Since:
- 4.1
- Author:
- Jeremy Grelle, Arjen Poutsma, Rossen Stoyanchev, Juergen Hoeller, Sebastien Deleuze
- 
Field SummaryFieldsFields inherited from class org.springframework.web.servlet.view.AbstractViewDEFAULT_CONTENT_TYPEFields inherited from class org.springframework.context.support.ApplicationObjectSupportloggerFields inherited from interface org.springframework.web.servlet.ViewPATH_VARIABLES, RESPONSE_STATUS_ATTRIBUTE, SELECTED_CONTENT_TYPE
- 
Constructor SummaryConstructorsModifierConstructorDescriptionprotectedAbstractJackson2View(ObjectMapper objectMapper, String contentType) 
- 
Method SummaryModifier and TypeMethodDescriptionprotected ObjectfilterAndWrapModel(Map<String, Object> model, HttpServletRequest request) Filter and optionally wrap the model inMappingJacksonValuecontainer.protected abstract ObjectfilterModel(Map<String, Object> model) Filter out undesired attributes from the given model.final JsonEncodingReturn theJsonEncodingfor this view.final ObjectMapperReturn theObjectMapperfor this view.protected voidprepareResponse(HttpServletRequest request, HttpServletResponse response) Prepare the given response for rendering.protected voidrenderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) Subclasses must implement this method to actually render the view.voidsetDisableCaching(boolean disableCaching) Disables caching of the generated JSON.voidsetEncoding(JsonEncoding encoding) Set theJsonEncodingfor this view.abstract voidsetModelKey(String modelKey) Set the attribute in the model that should be rendered by this view.voidsetObjectMapper(ObjectMapper objectMapper) Set theObjectMapperfor this view.voidsetPrettyPrint(boolean prettyPrint) Whether to use the default pretty printer when writing the output.voidsetUpdateContentLength(boolean updateContentLength) Whether to update the 'Content-Length' header of the response.protected voidwriteContent(OutputStream stream, Object object) Write the actual JSON content to the stream.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.AbstractViewaddStaticAttribute, createMergedOutputModel, createRequestContext, createTemporaryOutputStream, exposeModelAsRequestAttributes, formatViewName, generatesDownloadContent, getAttributesMap, getBeanName, getContentType, getRequestContextAttribute, getRequestToExpose, getStaticAttributes, isExposePathVariables, render, setAttributes, setAttributesCSV, setAttributesMap, setBeanName, setContentType, setExposeContextBeansAsAttributes, setExposedContextBeanNames, setExposePathVariables, setRequestContextAttribute, setResponseContentType, toString, writeToResponseMethods inherited from class org.springframework.web.context.support.WebApplicationObjectSupportgetServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContextMethods inherited from class org.springframework.context.support.ApplicationObjectSupportgetApplicationContext, getMessageSourceAccessor, initApplicationContext, obtainApplicationContext, requiredContextClass, setApplicationContext
- 
Field Details- 
updateContentLengthprotected boolean updateContentLength
 
- 
- 
Constructor Details- 
AbstractJackson2View
 
- 
- 
Method Details- 
setObjectMapperSet theObjectMapperfor this view. If not set, a defaultObjectMapperwill be used.Setting a custom-configured ObjectMapperis one way to take further control of the JSON serialization process. The other option is to use Jackson's provided annotations on the types to be serialized, in which case a custom-configured ObjectMapper is unnecessary.
- 
getObjectMapperReturn theObjectMapperfor this view.
- 
setEncodingSet theJsonEncodingfor this view. By default, UTF-8 is used.
- 
getEncodingReturn theJsonEncodingfor this view.
- 
setPrettyPrintpublic void setPrettyPrint(boolean prettyPrint) Whether to use the default pretty printer when writing the output. This is a shortcut for setting up anObjectMapperas follows:ObjectMapper mapper = new ObjectMapper(); mapper.configure(SerializationFeature.INDENT_OUTPUT, true); The default value is false.
- 
setDisableCachingpublic void setDisableCaching(boolean disableCaching) Disables caching of the generated JSON.Default is true, which will prevent the client from caching the generated JSON.
- 
setUpdateContentLengthpublic void setUpdateContentLength(boolean updateContentLength) Whether to update the 'Content-Length' header of the response. When set totrue, 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.
- 
prepareResponseDescription copied from class:AbstractViewPrepare the given response for rendering.The default implementation applies a workaround for an IE bug when sending download content via HTTPS. - Overrides:
- prepareResponsein class- AbstractView
- Parameters:
- request- current HTTP request
- response- current HTTP response
 
- 
renderMergedOutputModelprotected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws ExceptionDescription copied from class:AbstractViewSubclasses 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:
- renderMergedOutputModelin 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:
- Exception- if rendering failed
 
- 
filterAndWrapModelFilter and optionally wrap the model inMappingJacksonValuecontainer.- Parameters:
- model- the model, as passed on to- renderMergedOutputModel(java.util.Map<java.lang.String, java.lang.Object>, jakarta.servlet.http.HttpServletRequest, jakarta.servlet.http.HttpServletResponse)
- request- current HTTP request
- Returns:
- the wrapped or unwrapped value to be rendered
 
- 
writeContentWrite the actual JSON content to the stream.- Parameters:
- stream- the output stream to use
- object- the value to be rendered, as returned from- filterModel(java.util.Map<java.lang.String, java.lang.Object>)
- Throws:
- IOException- if writing failed
 
- 
setModelKeySet the attribute in the model that should be rendered by this view. When set, all other model attributes will be ignored.
- 
filterModelFilter out undesired attributes from the given model. The return value can be either anotherMapor a single value object.- Parameters:
- model- the model, as passed on to- renderMergedOutputModel(java.util.Map<java.lang.String, java.lang.Object>, jakarta.servlet.http.HttpServletRequest, jakarta.servlet.http.HttpServletResponse)
- Returns:
- the value to be rendered
 
- 
writePrefixWrite a prefix before the main content.- Parameters:
- generator- the generator to use for writing content.
- object- the object to write to the output message.
- Throws:
- IOException
 
- 
writeSuffixWrite a suffix after the main content.- Parameters:
- generator- the generator to use for writing content.
- object- the object to write to the output message.
- Throws:
- IOException
 
 
-