| java.lang.Object | |||
| ↳ | org.springframework.context.support.ApplicationObjectSupport | ||
| ↳ | org.springframework.web.context.support.WebApplicationObjectSupport | ||
| ↳ | org.springframework.web.servlet.view.ContentNegotiatingViewResolver | ||
Implementation of ViewResolver that resolves a view based on the request file name or Accept header.
The ContentNegotiatingViewResolver does not resolve views itself, but delegates to other ViewResolvers. By default, these other view resolvers are picked up automatically from the application context,
though they can also be set explicitly by using the viewResolvers property.
Note that in order for this view resolver to work properly, the order
property needs to be set to a higher precedence than the others (the default is HIGHEST_PRECEDENCE.)
This view resolver uses the requested media type to select a suitable View for a
request. This media type is determined by using the following criteria:
setFavorPathExtension(boolean) property is
true, the mediaTypes property is inspected for a matching media type.setFavorParameter(boolean)
property is true, the mediaTypes property is inspected for a matching
media type. The default name of the parameter is format and it can be configured using the
parameterName property.mediaTypes property and if the Java Activation
Framework (JAF) is both enabled and present on the class path,
getContentType(String) is used instead.ignoreAcceptHeader is false, the request Accept header is
used.View and determines if the requested media type is compatible
with the view's content type). The most compatible view is returned.
Additionally, this view resolver exposes the defaultViews property, allowing you to
override the views provided by the view resolvers. Note that these default views are offered as candicates, and
still need have the content type requested (via file extension, parameter, or Accept header, described above).
You can also set the default content type directly, which will be
returned when the other mechanisms (Accept header, file extension or parameter) do not result in a match.
For example, if the request path is /view.html, this view resolver will look for a view that has the
text/html content type (based on the html file extension). A request for /view with a text/html request Accept header has the same result.
|
[Expand]
Inherited Constants | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
From interface
org.springframework.core.Ordered
| |||||||||||
|
[Expand]
Inherited Fields | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
From class
org.springframework.context.support.ApplicationObjectSupport
| |||||||||||
| Public Constructors | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
Return the order value of this object, with a
higher value meaning greater in terms of sorting.
| |||||||||||
Resolve the given view by name.
| |||||||||||
Sets the default content type.
| |||||||||||
Sets the default views to use when a more specific view can not be obtained
from the
ViewResolver chain. | |||||||||||
Indicates whether a request parameter should be used to determine the requested media type,
in favor of looking at the
Accept header. | |||||||||||
Indicates whether the extension of the request path should be used to determine the requested media type,
in favor of looking at the
Accept header. | |||||||||||
Indicates whether the HTTP
Accept header should be ignored. | |||||||||||
Sets the mapping from file extensions to media types.
| |||||||||||
Sets the parameter name that can be used to determine the requested media type if the
setFavorParameter(boolean) property is true. | |||||||||||
Indicates whether to use the Java Activation Framework to map from file extensions to media types.
| |||||||||||
Indicates whether a
406 Not Acceptable status code should be
returned if no suitable view can be found. | |||||||||||
Sets the view resolvers to be wrapped by this view resolver.
| |||||||||||
| Protected Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
Determines the
MediaType for the given filename. | |||||||||||
Determines the
MediaType for the given parameter value. | |||||||||||
Determines the list of
MediaType for the given HttpServletRequest. | |||||||||||
Subclasses may override this for custom initialization based
on the ServletContext that this application object runs in.
| |||||||||||
|
[Expand]
Inherited Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
From class
org.springframework.web.context.support.WebApplicationObjectSupport
| |||||||||||
From class
org.springframework.context.support.ApplicationObjectSupport
| |||||||||||
From class
java.lang.Object
| |||||||||||
From interface
org.springframework.context.ApplicationContextAware
| |||||||||||
From interface
org.springframework.core.Ordered
| |||||||||||
From interface
org.springframework.web.context.ServletContextAware
| |||||||||||
From interface
org.springframework.web.servlet.ViewResolver
| |||||||||||
Return the order value of this object, with a higher value meaning greater in terms of sorting.
Normally starting with 0, with Integer.MAX_VALUE
indicating the greatest value. Same order values will result
in arbitrary positions for the affected objects.
Higher values can be interpreted as lower priority. As a consequence, the object with the lowest value has highest priority (somewhat analogous to Servlet "load-on-startup" values).
Resolve the given view by name.
Note: To allow for ViewResolver chaining, a ViewResolver should
return null if a view with the given name is not defined in it.
However, this is not required: Some ViewResolvers will always attempt
to build View objects with the given name, unable to return null
(rather throwing an exception when View creation failed).
| viewName | name of the view to resolve |
|---|---|
| locale | Locale in which to resolve the view. ViewResolvers that support internationalization should respect this. |
null if not found
(optional, to allow for ViewResolver chaining)| Exception |
|---|
Sets the default content type.
This content type will be used when file extension, parameter, nor Accept
header define a content-type, either through being disabled or empty.
Sets the default views to use when a more specific view can not be obtained
from the ViewResolver chain.
Indicates whether a request parameter should be used to determine the requested media type,
in favor of looking at the Accept header. The default value is false.
For instance, when this flag is true, a request for /hotels?format=pdf will result
in an AbstractPdfView being resolved, while the Accept header can be the browser-defined
text/html,application/xhtml+xml.
Indicates whether the extension of the request path should be used to determine the requested media type,
in favor of looking at the Accept header. The default value is true.
For instance, when this flag is true (the default), a request for /hotels.pdf
will result in an AbstractPdfView being resolved, while the Accept header can be the
browser-defined text/html,application/xhtml+xml.
Indicates whether the HTTP Accept header should be ignored. Default is false.
If set to true, this view resolver will only refer to the file extension and/or paramter,
as indicated by the favorPathExtension and
favorParameter properties.
Sets the mapping from file extensions to media types.
When this mapping is not set or when an extension is not present, this view resolver will fall back to using a FileTypeMap when the Java Action Framework is available.
Sets the parameter name that can be used to determine the requested media type if the setFavorParameter(boolean) property is true. The default parameter name is format.
Indicates whether to use the Java Activation Framework to map from file extensions to media types.
Default is true, i.e. the Java Activation Framework is used (if available).
Indicates whether a 406 Not Acceptable status code should be
returned if no suitable view can be found.
Default is false, meaning that this view resolver returns null for
resolveViewName(String, Locale) when an acceptable view cannot be found. This will allow for view
resolvers chaining. When this property is set to true,
resolveViewName(String, Locale) will respond with a view that sets the response status to
406 Not Acceptable instead.
Sets the view resolvers to be wrapped by this view resolver.
If this property is not set, view resolvers will be detected automatically.
Determines the MediaType for the given filename.
The default implementation will check the media types
property first for a defined mapping. If not present, and if the Java Activation Framework
can be found on the classpath, it will call getContentType(String)
This method can be overriden to provide a different algorithm.
| filename | the current request file name (i.e. hotels.html) |
|---|
Determines the MediaType for the given parameter value.
The default implementation will check the media types
property for a defined mapping.
This method can be overriden to provide a different algorithm.
| parameterValue | the parameter value (i.e. pdf). |
|---|
Determines the list of MediaType for the given HttpServletRequest.
The default implementation invokes getMediaTypeFromFilename(String) if favorPathExtension property is true. If the property is
false, or when a media type cannot be determined from the request path, this method will
inspect the Accept header of the request.
This method can be overriden to provide a different algorithm.
| request | the current servlet request |
|---|
Subclasses may override this for custom initialization based on the ServletContext that this application object runs in.
The default implementation is empty. Called by
initApplicationContext(org.springframework.context.ApplicationContext)
as well as setServletContext(javax.servlet.ServletContext).
| servletContext | the ServletContext that this application object runs in
(never null)
|
|---|