org.springframework.web.servlet.view.velocity
Class VelocityToolboxView
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.AbstractTemplateView
org.springframework.web.servlet.view.velocity.VelocityView
org.springframework.web.servlet.view.velocity.VelocityToolboxView
- All Implemented Interfaces:
- BeanNameAware, InitializingBean, ApplicationContextAware, ServletContextAware, View
- Direct Known Subclasses:
- VelocityLayoutView
public class VelocityToolboxView
- extends VelocityView
VelocityView
subclass which adds support for Velocity Tools toolboxes
and Velocity Tools ViewTool callbacks / Velocity Tools 1.3 init methods.
Specify a "toolboxConfigLocation", for example "/WEB-INF/toolbox.xml",
to automatically load a Velocity Tools toolbox definition file and expose
all defined tools in the specified scopes. If no config location is
specified, no toolbox will be loaded and exposed.
This view will always create a special Velocity context, namely an
instance of the ChainedContext class which is part of the view package
of Velocity tools. This allows to use tools from the view package of
Velocity Tools, like LinkTool, which need to be initialized with a special
context that implements the ViewContext interface (i.e. a ChainedContext).
This view also checks tools that are specified as "toolAttributes":
If they implement the ViewTool interface, they will get initialized with
the Velocity context. This allows tools from the view package of Velocity
Tools, such as LinkTool, to be defined as
"toolAttributes"
on a VelocityToolboxView,
instead of in a separate toolbox XML file.
This is a separate class mainly to avoid a required dependency on
the view package of Velocity Tools in VelocityView
itself.
As of Spring 3.0, this class requires Velocity Tools 1.3 or higher.
- Since:
- 1.1.3
- Author:
- Juergen Hoeller
- See Also:
setToolboxConfigLocation(java.lang.String)
,
initTool(java.lang.Object, org.apache.velocity.context.Context)
,
ViewContext
,
ChainedContext
Methods inherited from class org.springframework.web.servlet.view.velocity.VelocityView |
autodetectVelocityEngine, checkResource, createVelocityContext, doRender, exposeHelpers, exposeHelpers, exposeHelpers, exposeToolAttributes, getEncoding, getTemplate, getTemplate, getVelocityEngine, initApplicationContext, isCacheTemplate, mergeTemplate, renderMergedTemplateModel, setCacheTemplate, setDateToolAttribute, setEncoding, setNumberToolAttribute, setToolAttributes, setVelocityEngine |
Methods inherited from class org.springframework.web.servlet.view.AbstractView |
addStaticAttribute, createRequestContext, createTemporaryOutputStream, exposeModelAsRequestAttributes, generatesDownloadContent, getAttributesMap, getBeanName, getContentType, getRequestContextAttribute, getStaticAttributes, prepareResponse, render, setAttributes, setAttributesCSV, setAttributesMap, setBeanName, setContentType, setRequestContextAttribute, writeToResponse |
VelocityToolboxView
public VelocityToolboxView()
setToolboxConfigLocation
public void setToolboxConfigLocation(String toolboxConfigLocation)
- Set a Velocity Toolbox config location, for example "/WEB-INF/toolbox.xml",
to automatically load a Velocity Tools toolbox definition file and expose
all defined tools in the specified scopes. If no config location is
specified, no toolbox will be loaded and exposed.
The specfied location string needs to refer to a ServletContext
resource, as expected by ServletToolboxManager which is part of
the view package of Velocity Tools.
- See Also:
ServletToolboxManager.getInstance(javax.servlet.ServletContext, java.lang.String)
getToolboxConfigLocation
protected String getToolboxConfigLocation()
- Return the Velocity Toolbox config location, if any.
createVelocityContext
protected Context createVelocityContext(Map<String,Object> model,
HttpServletRequest request,
HttpServletResponse response)
throws Exception
- Overridden to create a ChainedContext, which is part of the view package
of Velocity Tools, as special context. ChainedContext is needed for
initialization of ViewTool instances.
- Overrides:
createVelocityContext
in class VelocityView
- Parameters:
model
- the model Map, containing the model attributes to be exposed to the viewrequest
- current HTTP requestresponse
- current HTTP response
- Returns:
- the Velocity Context
- Throws:
Exception
- if there's a fatal error while creating the context- See Also:
initTool(java.lang.Object, org.apache.velocity.context.Context)
initTool
protected void initTool(Object tool,
Context velocityContext)
throws Exception
- Overridden to check for the ViewContext interface which is part of the
view package of Velocity Tools. This requires a special Velocity context,
like ChainedContext as set up by
createVelocityContext(java.util.Map, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
in this class.
- Overrides:
initTool
in class VelocityView
- Parameters:
tool
- the tool instance to initializevelocityContext
- the Velocity context
- Throws:
Exception
- if initializion of the tool failed- See Also:
VelocityView.createVelocityContext(java.util.Map, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
,
ViewContext
,
ChainedContext
,
VelocityToolboxView