Class MarshallingView
- All Implemented Interfaces:
Aware
,BeanNameAware
,ApplicationContextAware
,ServletContextAware
,View
View
that allows for response context to be rendered as the result
of marshalling by a Marshaller
.
The Object to be marshalled is supplied as a parameter in the model and then
detected during response rendering. Users can
either specify a specific entry in the model via the sourceKey
property or have Spring locate the Source object.
- Since:
- 3.0
- Author:
- Arjen Poutsma, Juergen Hoeller
-
Field Summary
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
ConstructorDescriptionConstruct a newMarshallingView
with noMarshaller
set.MarshallingView
(Marshaller marshaller) Constructs a newMarshallingView
with the givenMarshaller
set. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
Subclasses can override this for custom initialization behavior.protected boolean
isEligibleForMarshalling
(String modelKey, Object value) Check whether the given value from the current view's model is eligible for marshalling through the configuredMarshaller
.protected Object
locateToBeMarshalled
(Map<String, Object> model) Locate the object to be marshalled.protected void
renderMergedOutputModel
(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) Subclasses must implement this method to actually render the view.void
setMarshaller
(Marshaller marshaller) Set theMarshaller
to be used by this view.void
setModelKey
(String modelKey) Set the name of the model key that represents the object to be marshalled.Methods inherited from class org.springframework.web.servlet.view.AbstractView
addStaticAttribute, createMergedOutputModel, createRequestContext, createTemporaryOutputStream, exposeModelAsRequestAttributes, formatViewName, generatesDownloadContent, getAttributesMap, getBeanName, getContentType, getRequestContextAttribute, getRequestToExpose, getStaticAttributes, isExposePathVariables, prepareResponse, render, setAttributes, setAttributesCSV, setAttributesMap, setBeanName, setContentType, setExposeContextBeansAsAttributes, setExposedContextBeanNames, setExposePathVariables, setRequestContextAttribute, setResponseContentType, 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, obtainApplicationContext, requiredContextClass, setApplicationContext
-
Field Details
-
DEFAULT_CONTENT_TYPE
Default content type. Overridable as bean property.- See Also:
-
-
Constructor Details
-
MarshallingView
public MarshallingView()Construct a newMarshallingView
with noMarshaller
set. The marshaller must be set after construction by invokingsetMarshaller(org.springframework.oxm.Marshaller)
. -
MarshallingView
Constructs a newMarshallingView
with the givenMarshaller
set.
-
-
Method Details
-
setMarshaller
Set theMarshaller
to be used by this view. -
setModelKey
Set the name of the model key that represents the object to be marshalled. If not specified, the model map will be searched for a supported value type.- See Also:
-
initApplicationContext
protected void initApplicationContext()Description copied from class:ApplicationObjectSupport
Subclasses can override this for custom initialization behavior.The default implementation is empty. Called by
ApplicationObjectSupport.initApplicationContext(org.springframework.context.ApplicationContext)
. -
renderMergedOutputModel
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws ExceptionDescription 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 classAbstractView
- Parameters:
model
- combined output Map (nevernull
), with dynamic values taking precedence over static attributesrequest
- current HTTP requestresponse
- current HTTP response- Throws:
Exception
- if rendering failed
-
locateToBeMarshalled
@Nullable protected Object locateToBeMarshalled(Map<String, Object> model) throws IllegalStateExceptionLocate the object to be marshalled.The default implementation first attempts to look under the configured model key, if any, before attempting to locate an object of supported type.
- Parameters:
model
- the model Map- Returns:
- the Object to be marshalled (or
null
if none found) - Throws:
IllegalStateException
- if the model object specified by the model key is not supported by the marshaller- See Also:
-
isEligibleForMarshalling
Check whether the given value from the current view's model is eligible for marshalling through the configuredMarshaller
.The default implementation calls
Marshaller.supports(Class)
, unwrapping a givenJAXBElement
first if applicable.- Parameters:
modelKey
- the value's key in the model (nevernull
)value
- the value to check (nevernull
)- Returns:
- whether the given value is to be considered as eligible
- See Also:
-