org.apache.velocity.tools.view.servlet
Class VelocityLayoutServlet

java.lang.Object
  extended by javax.servlet.GenericServlet
      extended by javax.servlet.http.HttpServlet
          extended by org.apache.velocity.tools.view.servlet.VelocityViewServlet
              extended by org.apache.velocity.tools.view.servlet.VelocityLayoutServlet
All Implemented Interfaces:
java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig

public class VelocityLayoutServlet
extends VelocityViewServlet

Extension of the VelocityViewServlet to perform "two-pass" layout rendering and allow for a customized error screen. For a brief user-guide to this, i suggest trying to track down the VLS_README.txt file that hopefully made it into the docs somewhere.

Version:
$Id: VelocityLayoutServlet.java 479724 2006-11-27 18:49:37Z nbubna $
Author:
Nathan Bubna
See Also:
Serialized Form

Field Summary
static java.lang.String DEFAULT_DEFAULT_LAYOUT
          The default filename for the servlet's default layout
static java.lang.String DEFAULT_ERROR_TEMPLATE
          The default error template's filename.
static java.lang.String DEFAULT_LAYOUT_DIR
          The default layout directory
protected  java.lang.String defaultLayout
           
protected  java.lang.String errorTemplate
           
static java.lang.String KEY_ERROR_CAUSE
          The context key that holds the Throwable that broke the rendering of the requested screen.
static java.lang.String KEY_ERROR_INVOCATION_EXCEPTION
          The context key that holds the MethodInvocationException that broke the rendering of the requested screen.
static java.lang.String KEY_ERROR_STACKTRACE
          The context key that holds the stack trace of the error that broke the rendering of the requested screen.
static java.lang.String KEY_LAYOUT
          The context/parameter key used to specify an alternate layout to be used for a request instead of the default layout.
static java.lang.String KEY_SCREEN_CONTENT
          The context key that will hold the content of the screen.
protected  java.lang.String layoutDir
           
static java.lang.String PROPERTY_DEFAULT_LAYOUT
          The velocity.properties key for specifying the servlet's default layout template's filename.
static java.lang.String PROPERTY_ERROR_TEMPLATE
          The velocity.properties key for specifying the servlet's error template.
static java.lang.String PROPERTY_LAYOUT_DIR
          The velocity.properties key for specifying the relative directory holding layout templates.
private static long serialVersionUID
          serial version id
private  org.apache.velocity.app.VelocityEngine velocity
           
 
Fields inherited from class org.apache.velocity.tools.view.servlet.VelocityViewServlet
CONTENT_TYPE, DEFAULT_CONTENT_TYPE, DEFAULT_OUTPUT_ENCODING, DEFAULT_PROPERTIES_PATH, DEFAULT_TOOLBOX_PATH, DEFAULT_TOOLS_PROPERTIES, INIT_PROPS_KEY, SERVLET_CONTEXT_KEY, TOOLBOX_KEY, toolboxManager
 
Constructor Summary
VelocityLayoutServlet()
           
 
Method Summary
protected  org.apache.velocity.context.Context createContext(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Overrides VelocityViewServlet to check the request for an alternate layout
protected  void error(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.Exception e)
          Overrides VelocityViewServlet to display user's custom error template
 void init(javax.servlet.ServletConfig config)
          Initializes Velocity, the view servlet and checks for changes to the initial layout configuration.
protected  void mergeTemplate(org.apache.velocity.Template template, org.apache.velocity.context.Context context, javax.servlet.http.HttpServletResponse response)
          Overrides VelocityViewServlet.mergeTemplate to do a two-pass render for handling layouts
 
Methods inherited from class org.apache.velocity.tools.view.servlet.VelocityViewServlet
doGet, doPost, doRequest, fillContext, findInitParameter, getResponseWriter, getTemplate, getTemplate, getTemplate, getTemplate, getVelocityEngine, getVelocityProperty, handleRequest, initToolbox, initVelocity, loadConfiguration, performMerge, requestCleanup, setContentType, setVelocityEngine
 
Methods inherited from class javax.servlet.http.HttpServlet
doDelete, doHead, doOptions, doPut, doTrace, getLastModified, service, service
 
Methods inherited from class javax.servlet.GenericServlet
destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

serialVersionUID

private static final long serialVersionUID
serial version id

See Also:
Constant Field Values

PROPERTY_ERROR_TEMPLATE

public static final java.lang.String PROPERTY_ERROR_TEMPLATE
The velocity.properties key for specifying the servlet's error template.

See Also:
Constant Field Values

PROPERTY_LAYOUT_DIR

public static final java.lang.String PROPERTY_LAYOUT_DIR
The velocity.properties key for specifying the relative directory holding layout templates.

See Also:
Constant Field Values

PROPERTY_DEFAULT_LAYOUT

public static final java.lang.String PROPERTY_DEFAULT_LAYOUT
The velocity.properties key for specifying the servlet's default layout template's filename.

See Also:
Constant Field Values

DEFAULT_ERROR_TEMPLATE

public static java.lang.String DEFAULT_ERROR_TEMPLATE
The default error template's filename.


DEFAULT_LAYOUT_DIR

public static java.lang.String DEFAULT_LAYOUT_DIR
The default layout directory


DEFAULT_DEFAULT_LAYOUT

public static java.lang.String DEFAULT_DEFAULT_LAYOUT
The default filename for the servlet's default layout


KEY_SCREEN_CONTENT

public static java.lang.String KEY_SCREEN_CONTENT
The context key that will hold the content of the screen. This key ($screen_content) must be present in the layout template for the current screen to be rendered.


KEY_LAYOUT

public static java.lang.String KEY_LAYOUT
The context/parameter key used to specify an alternate layout to be used for a request instead of the default layout.


KEY_ERROR_CAUSE

public static java.lang.String KEY_ERROR_CAUSE
The context key that holds the Throwable that broke the rendering of the requested screen.


KEY_ERROR_STACKTRACE

public static java.lang.String KEY_ERROR_STACKTRACE
The context key that holds the stack trace of the error that broke the rendering of the requested screen.


KEY_ERROR_INVOCATION_EXCEPTION

public static java.lang.String KEY_ERROR_INVOCATION_EXCEPTION
The context key that holds the MethodInvocationException that broke the rendering of the requested screen. If this value is placed in the context, then $error_cause will hold the error that this invocation exception is wrapping.


errorTemplate

protected java.lang.String errorTemplate

layoutDir

protected java.lang.String layoutDir

defaultLayout

protected java.lang.String defaultLayout

velocity

private org.apache.velocity.app.VelocityEngine velocity
Constructor Detail

VelocityLayoutServlet

public VelocityLayoutServlet()
Method Detail

init

public void init(javax.servlet.ServletConfig config)
          throws javax.servlet.ServletException
Initializes Velocity, the view servlet and checks for changes to the initial layout configuration.

Specified by:
init in interface javax.servlet.Servlet
Overrides:
init in class VelocityViewServlet
Parameters:
config - servlet configuration parameters
Throws:
javax.servlet.ServletException

createContext

protected org.apache.velocity.context.Context createContext(javax.servlet.http.HttpServletRequest request,
                                                            javax.servlet.http.HttpServletResponse response)
Overrides VelocityViewServlet to check the request for an alternate layout

Overrides:
createContext in class VelocityViewServlet
Parameters:
request - client request
response - client response
Returns:
the Context to fill

mergeTemplate

protected void mergeTemplate(org.apache.velocity.Template template,
                             org.apache.velocity.context.Context context,
                             javax.servlet.http.HttpServletResponse response)
                      throws org.apache.velocity.exception.ResourceNotFoundException,
                             org.apache.velocity.exception.ParseErrorException,
                             org.apache.velocity.exception.MethodInvocationException,
                             java.io.IOException,
                             java.io.UnsupportedEncodingException,
                             java.lang.Exception
Overrides VelocityViewServlet.mergeTemplate to do a two-pass render for handling layouts

Overrides:
mergeTemplate in class VelocityViewServlet
Parameters:
template - template object returned by the handleRequest() method
context - Context created by the VelocityViewServlet.createContext(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
response - servlet reponse (used to get a Writer)
Throws:
org.apache.velocity.exception.ResourceNotFoundException
org.apache.velocity.exception.ParseErrorException
org.apache.velocity.exception.MethodInvocationException
java.io.IOException
java.io.UnsupportedEncodingException
java.lang.Exception

error

protected void error(javax.servlet.http.HttpServletRequest request,
                     javax.servlet.http.HttpServletResponse response,
                     java.lang.Exception e)
              throws javax.servlet.ServletException
Overrides VelocityViewServlet to display user's custom error template

Overrides:
error in class VelocityViewServlet
Parameters:
request - original HttpServletRequest from servlet container.
response - HttpServletResponse object from servlet container.
e - Exception that was thrown by some other part of process.
Throws:
javax.servlet.ServletException


Copyright (c) 2003-2007 Apache Software Foundation