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

org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver 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.AbstractUrlBasedView;

/**
 * Convenience subclass of VelocityViewResolver, adding support
 * for VelocityLayoutView and its properties.
 *
 * 

See VelocityViewResolver's javadoc for general usage info. * * @author Juergen Hoeller * @since 1.2.7 * @see VelocityViewResolver * @see VelocityLayoutView * @see #setLayoutUrl * @see #setLayoutKey * @see #setScreenContentKey */ public class VelocityLayoutViewResolver extends VelocityViewResolver { private String layoutUrl; private String layoutKey; private String screenContentKey; /** * Requires VelocityLayoutView. * @see VelocityLayoutView */ protected Class requiredViewClass() { return VelocityLayoutView.class; } /** * Set the layout template to use. Default is "layout.vm". * @param layoutUrl the template location (relative to the template * root directory) * @see VelocityLayoutView#setLayoutUrl */ public void setLayoutUrl(String layoutUrl) { this.layoutUrl = layoutUrl; } /** * Set the context key used to specify an alternate layout to be used instead * of the default layout. Screen content templates can override the layout * template that they wish to be wrapped with by setting this value in the * template, for example:
* #set( $layout = "MyLayout.vm" ) *

The default key is "layout", as illustrated above. * @param layoutKey the name of the key you wish to use in your * screen content templates to override the layout template * @see VelocityLayoutView#setLayoutKey */ public void setLayoutKey(String layoutKey) { this.layoutKey = layoutKey; } /** * Set the name of the context key that will hold the content of * the screen within the layout template. This key must be present * in the layout template for the current screen to be rendered. *

Default is "screen_content": accessed in VTL as * $screen_content. * @param screenContentKey the name of the screen content key to use * @see VelocityLayoutView#setScreenContentKey */ public void setScreenContentKey(String screenContentKey) { this.screenContentKey = screenContentKey; } protected AbstractUrlBasedView buildView(String viewName) throws Exception { VelocityLayoutView view = (VelocityLayoutView) super.buildView(viewName); // Use not-null checks to preserve VelocityLayoutView's defaults. if (this.layoutUrl != null) { view.setLayoutUrl(this.layoutUrl); } if (this.layoutKey != null) { view.setLayoutKey(this.layoutKey); } if (this.screenContentKey != null) { view.setScreenContentKey(this.screenContentKey); } return view; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy