org.apache.velocity.tools.view

## 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:
  Serialized Form

### Field Summary

Fields
`static String` `DEFAULT_DEFAULT_LAYOUT` The default filename for the servlet's default layout
`static String` `DEFAULT_ERROR_TEMPLATE` The default error template's filename.
`static String` `DEFAULT_LAYOUT_DIR` The default layout directory
`protected String` `defaultLayout`
`protected String` `errorTemplate`
`static String` `KEY_ERROR_CAUSE` The context key that holds the `Throwable` that broke the rendering of the requested screen.
`static String` `KEY_ERROR_INVOCATION_EXCEPTION` The context key that holds the `MethodInvocationException` that broke the rendering of the requested screen.
`static String` `KEY_ERROR_STACKTRACE` The context key that holds the stack trace of the error that broke the rendering of the requested screen.
`static 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 String` `KEY_SCREEN_CONTENT` The context key that will hold the content of the screen.
`protected String` `layoutDir`
`static String` `PROPERTY_DEFAULT_LAYOUT` The velocity.properties key for specifying the servlet's default layout template's filename.
`static String` `PROPERTY_DYNAMIC_LAYOUT` The velocity.properties key for specifying whether dynamic layout change is allowed
`static String` `PROPERTY_ERROR_TEMPLATE` The velocity.properties key for specifying the servlet's error template.
`static String` `PROPERTY_LAYOUT_DIR` The velocity.properties key for specifying the relative directory holding layout templates.

### Fields inherited from class org.apache.velocity.tools.view.VelocityViewServlet

`BUFFER_OUTPUT_PARAM`

### Constructor Summary

Constructors
Constructor and Description
`VelocityLayoutServlet()`

### Method Summary

All Methods Instance Methods Concrete Methods
`protected void` `error(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, 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 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.HttpServletResponse response)` Overrides VelocityViewServlet.mergeTemplate to do a two-pass render for handling layouts

### Methods inherited from class org.apache.velocity.tools.view.VelocityViewServlet

`createContext, doGet, doPost, doRequest, findInitParameter, getLog, getOutputWriter, getTemplate, getTemplate, getVelocityProperty, getVelocityView, handleRequest, initRequest, manageResourceNotFound, mergeTemplate, requestCleanup, setContentType, setVelocityView`

### 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 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 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 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 String DEFAULT_ERROR_TEMPLATE

The default error template's filename.

See Also:
  Constant Field Values

#### DEFAULT_LAYOUT_DIR

    public static final String DEFAULT_LAYOUT_DIR

The default layout directory

See Also:
  Constant Field Values

#### DEFAULT_DEFAULT_LAYOUT

    public static final String DEFAULT_DEFAULT_LAYOUT

The default filename for the servlet's default layout

See Also:
  Constant Field Values

#### 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:
  Constant Field Values

#### 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:
  Constant Field Values

#### 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:
  Constant Field Values

#### 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:
  Constant Field Values

#### 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:
  Constant Field Values

#### PROPERTY_DYNAMIC_LAYOUT

    public static final String PROPERTY_DYNAMIC_LAYOUT

The velocity.properties key for specifying whether dynamic layout change is allowed

See Also:
  Constant Field Values

#### errorTemplate

    protected String errorTemplate

#### layoutDir

    protected String layoutDir

#### defaultLayout

    protected 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 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.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
  `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