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 ViewResolver
s. 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 )
|
---|