Class VelocityLayoutServlet

java.lang.Object
javax.servlet.GenericServlet
javax.servlet.http.HttpServlet
org.apache.velocity.tools.view.VelocityViewServlet
org.apache.velocity.tools.view.VelocityLayoutServlet
All Implemented Interfaces:
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.
Version:
$Id$
Author:
Nathan Bubna
See Also:
  • Field Details

    • PROPERTY_ERROR_TEMPLATE

      public static final String PROPERTY_ERROR_TEMPLATE
      The velocity.properties key for specifying the servlet's error template.
      See Also:
    • PROPERTY_LAYOUT_DIR

      public static final String PROPERTY_LAYOUT_DIR
      The velocity.properties key for specifying the relative directory holding layout templates.
      See Also:
    • PROPERTY_DEFAULT_LAYOUT

      public static final String PROPERTY_DEFAULT_LAYOUT
      The velocity.properties key for specifying the servlet's default layout template's filename.
      See Also:
    • DEFAULT_ERROR_TEMPLATE

      public static final String DEFAULT_ERROR_TEMPLATE
      The default error template's filename.
      See Also:
    • DEFAULT_LAYOUT_DIR

      public static final String DEFAULT_LAYOUT_DIR
      The default layout directory
      See Also:
    • DEFAULT_DEFAULT_LAYOUT

      public static final String DEFAULT_DEFAULT_LAYOUT
      The default filename for the servlet's default layout
      See Also:
    • KEY_SCREEN_CONTENT

      public static final 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.
      See Also:
    • KEY_LAYOUT

      public static final String KEY_LAYOUT
      The context/parameter key used to specify an alternate layout to be used for a request instead of the default layout.
      See Also:
    • KEY_ERROR_CAUSE

      public static final String KEY_ERROR_CAUSE
      The context key that holds the Throwable that broke the rendering of the requested screen.
      See Also:
    • KEY_ERROR_STACKTRACE

      public static final String KEY_ERROR_STACKTRACE
      The context key that holds the stack trace of the error that broke the rendering of the requested screen.
      See Also:
    • KEY_ERROR_INVOCATION_EXCEPTION

      public static final 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.
      See Also:
    • PROPERTY_DYNAMIC_LAYOUT

      public static final String PROPERTY_DYNAMIC_LAYOUT
      The velocity.properties key for specifying whether dynamic layout change is allowed
      See Also:
    • errorTemplate

      protected String errorTemplate
    • layoutDir

      protected String layoutDir
    • defaultLayout

      protected String defaultLayout
  • Constructor Details

    • VelocityLayoutServlet

      public VelocityLayoutServlet()
  • Method Details

    • 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
    • fillContext

      protected void fillContext(org.apache.velocity.context.Context ctx, javax.servlet.http.HttpServletRequest request)
      Overrides VelocityViewServlet to check the request for an alternate layout
      Overrides:
      fillContext in class VelocityViewServlet
      Parameters:
      ctx - context for this request
      request - client request
    • findLayout

      protected String findLayout(javax.servlet.http.HttpServletRequest request)
      Searches for a non-default layout to be used for this request. This implementation checks the request parameters and attributes.
      Parameters:
      request - servlet request
      Returns:
      layout name or null
    • mergeTemplate

      protected void mergeTemplate(org.apache.velocity.Template template, org.apache.velocity.context.Context context, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws IOException
      Overrides VelocityViewServlet.mergeTemplate to do a two-pass render for handling layouts
      Overrides:
      mergeTemplate in class VelocityViewServlet
      Parameters:
      template - Template object
      context - Velocity context
      request - servlet request
      response - servlet response
      Throws:
      IOException
    • error

      protected void error(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Throwable e)
      Overrides VelocityViewServlet to display user's custom error template
      Overrides:
      error in class VelocityViewServlet
      Parameters:
      request - servlet request
      response - servlet response
      e - thrown error