Class 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.
    Version:
    $Id$
    Author:
    Nathan Bubna
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      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_DYNAMIC_LAYOUT
      The velocity.properties key for specifying whether dynamic layout change is allowed
      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.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void error​(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.Throwable e)
      Overrides VelocityViewServlet to display user's custom error template
      protected void fillContext​(org.apache.velocity.context.Context ctx, javax.servlet.http.HttpServletRequest request)
      Overrides VelocityViewServlet to check the request for an alternate layout
      protected java.lang.String findLayout​(javax.servlet.http.HttpServletRequest request)
      Searches for a non-default layout to be used for this request.
      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.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
      Overrides VelocityViewServlet.mergeTemplate to do a two-pass render for handling layouts
      • 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

      • 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 final java.lang.String DEFAULT_ERROR_TEMPLATE
        The default error template's filename.
        See Also:
        Constant Field Values
      • DEFAULT_LAYOUT_DIR

        public static final java.lang.String DEFAULT_LAYOUT_DIR
        The default layout directory
        See Also:
        Constant Field Values
      • DEFAULT_DEFAULT_LAYOUT

        public static final java.lang.String DEFAULT_DEFAULT_LAYOUT
        The default filename for the servlet's default layout
        See Also:
        Constant Field Values
      • KEY_SCREEN_CONTENT

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

        public static final 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.
        See Also:
        Constant Field Values
      • KEY_ERROR_CAUSE

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

        public static final 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.
        See Also:
        Constant Field Values
      • KEY_ERROR_INVOCATION_EXCEPTION

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

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

        protected java.lang.String errorTemplate
      • layoutDir

        protected java.lang.String layoutDir
      • defaultLayout

        protected java.lang.String defaultLayout
    • 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
      • 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 java.lang.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 java.io.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:
        java.io.IOException
      • error

        protected void error​(javax.servlet.http.HttpServletRequest request,
                             javax.servlet.http.HttpServletResponse response,
                             java.lang.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