|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.context.support.ApplicationObjectSupport org.springframework.web.context.support.WebApplicationObjectSupport org.springframework.web.servlet.view.AbstractView org.springframework.web.servlet.view.AbstractUrlBasedView org.springframework.web.servlet.view.xslt.XsltView
public class XsltView
XSLT-driven View that allows for response context to be rendered as the result of an XSLT transformation.
The XSLT Source object 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. This class also provides basic conversion
of objects into Source implementations. See here
for more details.
All model parameters are passed to the XSLT Transformer as parameters.
In addition the user can configure output properties
to be passed to the Transformer.
Field Summary |
---|
Fields inherited from class org.springframework.web.servlet.view.AbstractView |
---|
DEFAULT_CONTENT_TYPE |
Fields inherited from class org.springframework.context.support.ApplicationObjectSupport |
---|
logger |
Constructor Summary | |
---|---|
XsltView()
|
Method Summary | |
---|---|
protected void |
configureIndentation(Transformer transformer)
Configures the indentation settings for the supplied Transformer . |
protected void |
configureResponse(Map model,
HttpServletResponse response,
Transformer transformer)
Configures the supplied HttpServletResponse . |
protected void |
configureTransformer(Map model,
HttpServletResponse response,
Transformer transformer)
Configures the supplied Transformer instance. |
protected Source |
convertSource(Object source)
Converts the supplied Object into an XSLT Source if the
Object type is supported . |
protected void |
copyModelParameters(Map model,
Transformer transformer)
Copies all entries from the supplied Map into the parameter set
of the supplied Transformer . |
protected void |
copyOutputProperties(Transformer transformer)
Copies the configured output Properties , if any, into the
output property set of the supplied
Transformer . |
protected Result |
createResult(HttpServletResponse response)
Creates the XSLT Result used to render the result of the transformation. |
protected Transformer |
createTransformer(Templates templates)
Creates the Transformer instance used to prefer the XSLT transformation. |
protected Class[] |
getSourceTypes()
Returns the array of Classes that are supported when converting to an
XSLT Source . |
protected Source |
getStylesheetSource()
Gets the XSLT Source for the XSLT template under the configured URL . |
protected TransformerFactory |
getTransformerFactory()
|
protected void |
initApplicationContext()
Subclasses can override this for custom initialization behavior. |
protected Source |
locateSource(Map model)
Locates the Source object in the supplied model, converting objects as required. |
protected void |
renderMergedOutputModel(Map model,
HttpServletRequest request,
HttpServletResponse response)
Subclasses must implement this method to actually render the view. |
void |
setCacheTemplates(boolean cacheTemplates)
Turns on/off the caching of the XSLT Templates instance. |
void |
setErrorListener(ErrorListener errorListener)
|
void |
setIndent(boolean indent)
|
void |
setOutputProperties(Properties outputProperties)
|
void |
setSourceKey(String sourceKey)
|
void |
setUriResolver(URIResolver uriResolver)
Sets a custom URIResolver to use for processing the transformation
and loading the |
Methods inherited from class org.springframework.web.servlet.view.AbstractUrlBasedView |
---|
afterPropertiesSet, getUrl, setUrl, toString |
Methods inherited from class org.springframework.web.servlet.view.AbstractView |
---|
addStaticAttribute, createRequestContext, exposeModelAsRequestAttributes, getAttributesMap, getBeanName, getContentType, getRequestContextAttribute, getStaticAttributes, render, setAttributes, setAttributesCSV, setAttributesMap, setBeanName, setContentType, setRequestContextAttribute |
Methods inherited from class org.springframework.web.context.support.WebApplicationObjectSupport |
---|
getServletContext, getTempDir, getWebApplicationContext, isContextRequired, setServletContext |
Methods inherited from class org.springframework.context.support.ApplicationObjectSupport |
---|
getApplicationContext, getMessageSourceAccessor, requiredContextClass, setApplicationContext |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public XsltView()
Method Detail |
---|
public void setCacheTemplates(boolean cacheTemplates)
Templates
instance. The default
value is true
. Only set this to false
in development
as not caching seriously impacts performance.
public void setUriResolver(URIResolver uriResolver)
URIResolver
to use for processing the transformation
and loading the
uriResolver
- public void setErrorListener(ErrorListener errorListener)
public void setSourceKey(String sourceKey)
public void setOutputProperties(Properties outputProperties)
public void setIndent(boolean indent)
protected final TransformerFactory getTransformerFactory()
protected void initApplicationContext() throws BeansException
ApplicationObjectSupport
setApplicationContext
after setting the context instance.
Note: Does not get called on reinitialization of the context but rather just on first initialization of this object's context reference.
initApplicationContext
in class ApplicationObjectSupport
ApplicationContextException
- in case of initialization errors
BeansException
- if thrown by ApplicationContext methodsApplicationObjectSupport.setApplicationContext(org.springframework.context.ApplicationContext)
protected void renderMergedOutputModel(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception
AbstractView
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.
renderMergedOutputModel
in class AbstractView
model
- combined output Map (never null
),
with dynamic values taking precedence over static attributesrequest
- current HTTP requestresponse
- current HTTP response
Exception
- if rendering failedprotected Result createResult(HttpServletResponse response) throws Exception
Result
used to render the result of the transformation.
Default implementation creates a StreamResult
wrapping the supplied
HttpServletResponse
.
Exception
protected Source locateSource(Map model) throws Exception
Source
object in the supplied model, converting objects as required.
Default implementation first attempts to look under the configured source key
,
if any, before attempting to locate an object of supported type
.
Exception
protected Class[] getSourceTypes()
Classes
that are supported when converting to an
XSLT Source
. Current supports Source
, Document
, Node
,
InputStream
, Reader
and Resource
.
protected Source convertSource(Object source) throws Exception
Object
into an XSLT Source
if the
Object
type is supported
.
IllegalArgumentException
- if the Object
cannot if not of a supported type.
Exception
protected void configureTransformer(Map model, HttpServletResponse response, Transformer transformer)
Transformer
instance. Default implementation copies parameters from
the model into the Transformer
parameter set
.
This implementation also copies the output properties
into the Transformer
output properties
.
Indentation properties are also set by this implementation.
copyModelParameters(Map, Transformer)
,
copyOutputProperties(Transformer)
,
configureIndentation(Transformer)
protected final void configureIndentation(Transformer transformer)
Transformer
.
transformer
- the target transformer
IllegalArgumentException
- if the supplied Transformer
is null
TransformerUtils.enableIndenting(javax.xml.transform.Transformer)
,
TransformerUtils.disableIndenting(javax.xml.transform.Transformer)
protected final void copyOutputProperties(Transformer transformer)
Properties
, if any, into the
output property set
of the supplied
Transformer
.
protected final void copyModelParameters(Map model, Transformer transformer)
parameter set
of the supplied Transformer
.
protected void configureResponse(Map model, HttpServletResponse response, Transformer transformer)
HttpServletResponse
. The default implementation of this
method sets the content type
and
encoding
from properties specified
in the Transformer
.
protected Transformer createTransformer(Templates templates) throws TransformerConfigurationException
Transformer
instance used to prefer the XSLT transformation. Default implementation
simply calls Templates.newTransformer()
. Configures the Transformer
with the custom
URIResolver
if specified.
TransformerConfigurationException
protected Source getStylesheetSource()
Source
for the XSLT template under the configured URL
.
|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |