All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.springframework.web.servlet.view.velocity.VelocityViewResolver Maven / Gradle / Ivy

There is a newer version: 5.3.34
Show newest version
/*
 * Copyright 2002-2006 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.web.servlet.view.velocity;

import org.springframework.web.servlet.view.AbstractTemplateViewResolver;
import org.springframework.web.servlet.view.AbstractUrlBasedView;

/**
 * Convenience subclass of UrlBasedViewResolver that supports VelocityView
 * (that is Velocity templates) and custom subclasses of it.
 *
 * 

The view class for all views generated by this resolver can be specified * via setViewClass. See UrlBasedViewResolver's javadoc for details. * *

Note: When chaining ViewResolvers, a VelocityViewResolver always needs * to be last, as it will attempt to resolve any view name, no matter whether * the underlying resource actually exists. * * @author Juergen Hoeller * @since 13.12.2003 * @see #setViewClass * @see #setPrefix * @see #setSuffix * @see #setRequestContextAttribute * @see #setExposeSpringMacroHelpers * @see #setVelocityFormatterAttribute * @see #setDateToolAttribute * @see #setNumberToolAttribute * @see VelocityView */ public class VelocityViewResolver extends AbstractTemplateViewResolver { private String velocityFormatterAttribute; private String dateToolAttribute; private String numberToolAttribute; private String toolboxConfigLocation; /** * Sets default viewClass to requiredViewClass. * @see #setViewClass * @see #requiredViewClass */ public VelocityViewResolver() { setViewClass(requiredViewClass()); } /** * Requires VelocityView. * @see VelocityView */ protected Class requiredViewClass() { return VelocityView.class; } /** * Set the name of the VelocityFormatter helper object to expose in the * Velocity context of this view, or null if not needed. * VelocityFormatter is part of the standard Velocity distribution. * @see org.apache.velocity.app.tools.VelocityFormatter * @see VelocityView#setVelocityFormatterAttribute */ public void setVelocityFormatterAttribute(String velocityFormatterAttribute) { this.velocityFormatterAttribute = velocityFormatterAttribute; } /** * Set the name of the DateTool helper object to expose in the Velocity context * of this view, or null if not needed. DateTool is part of Velocity Tools 1.0. * @see org.apache.velocity.tools.generic.DateTool * @see VelocityView#setDateToolAttribute */ public void setDateToolAttribute(String dateToolAttribute) { this.dateToolAttribute = dateToolAttribute; } /** * Set the name of the NumberTool helper object to expose in the Velocity context * of this view, or null if not needed. NumberTool is part of Velocity Tools 1.1. * @see org.apache.velocity.tools.generic.NumberTool * @see VelocityView#setNumberToolAttribute */ public void setNumberToolAttribute(String numberToolAttribute) { this.numberToolAttribute = numberToolAttribute; } /** * 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. *

Note: Specifying a toolbox config location will lead to * VelocityToolboxView instances being created. * @see org.apache.velocity.tools.view.servlet.ServletToolboxManager#getInstance * @see VelocityToolboxView#setToolboxConfigLocation */ public void setToolboxConfigLocation(String toolboxConfigLocation) { this.toolboxConfigLocation = toolboxConfigLocation; } protected void initApplicationContext() { super.initApplicationContext(); if (this.toolboxConfigLocation != null) { if (VelocityView.class.equals(getViewClass())) { logger.info("Using VelocityToolboxView instead of default VelocityView " + "due to specified toolboxConfigLocation"); setViewClass(VelocityToolboxView.class); } else if (!VelocityToolboxView.class.isAssignableFrom(getViewClass())) { throw new IllegalArgumentException( "Given view class [" + getViewClass().getName() + "] is not of type [" + VelocityToolboxView.class.getName() + "], which it needs to be in case of a specified toolboxConfigLocation"); } } } protected AbstractUrlBasedView buildView(String viewName) throws Exception { VelocityView view = (VelocityView) super.buildView(viewName); view.setVelocityFormatterAttribute(this.velocityFormatterAttribute); view.setDateToolAttribute(this.dateToolAttribute); view.setNumberToolAttribute(this.numberToolAttribute); if (this.toolboxConfigLocation != null) { ((VelocityToolboxView) view).setToolboxConfigLocation(this.toolboxConfigLocation); } return view; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy