org.springframework.web.servlet.view.xml

Class MarshallingView

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


    public class MarshallingView
    extends AbstractView
    Spring-MVC 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 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
    • Method Detail

      • setMarshaller

        public void setMarshaller(Marshaller marshaller)
        Set the Marshaller to be used by this view.
      • setModelKey

        public void setModelKey(java.lang.String modelKey)
        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:
        Marshaller.supports(Class)
      • renderMergedOutputModel

        protected void renderMergedOutputModel(java.util.Map<java.lang.String,java.lang.Object> model,
                                               HttpServletRequest request,
                                               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
      • locateToBeMarshalled

        @Nullable
        protected java.lang.Object locateToBeMarshalled(java.util.Map<java.lang.String,java.lang.Object> model)
                                                           throws java.lang.IllegalStateException
        Locate 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:
        java.lang.IllegalStateException - if the model object specified by the model key is not supported by the marshaller
        See Also:
        setModelKey(String)
      • isEligibleForMarshalling

        protected boolean isEligibleForMarshalling(java.lang.String modelKey,
                                                   java.lang.Object value)
        Check whether the given value from the current view's model is eligible for marshalling through the configured Marshaller.

        The default implementation calls Marshaller.supports(Class), unwrapping a given JAXBElement first if applicable.

        Parameters:
        modelKey - the value's key in the model (never null)
        value - the value to check (never null)
        Returns:
        whether the given value is to be considered as eligible
        See Also:
        Marshaller.supports(Class)