
org.zodiac.template.velocity.spring.view.servlet.ServletVelocityViewResolver Maven / Gradle / Ivy
package org.zodiac.template.velocity.spring.view.servlet;
import org.apache.velocity.tools.ToolboxFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.view.AbstractTemplateViewResolver;
import org.springframework.web.servlet.view.AbstractUrlBasedView;
import org.zodiac.template.velocity.spring.view.VelocityViewResolver;
public class ServletVelocityViewResolver extends AbstractTemplateViewResolver implements VelocityViewResolver {
protected Logger log = LoggerFactory.getLogger(getClass());
private String dateToolAttribute;
private String numberToolAttribute;
private ToolboxFactory toolboxFactory;
public ServletVelocityViewResolver() {
setViewClass(requiredViewClass());
}
/**
* Requires {@link ServletVelocityView}.
*/
@Override
protected Class> requiredViewClass() {
return ServletVelocityView.class;
}
/**
* Set the name of the DateTool helper object to expose in the Velocity context of this view, or {@code null} if not
* needed. DateTool is part of Velocity Tools 1.0.
*
* @see org.apache.velocity.tools.generic.DateTool
* @see ServletVelocityView#setDateToolAttribute
*/
@Override
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 {@code null} if
* not needed. NumberTool is part of Velocity Tools 1.1.
*
* @see org.apache.velocity.tools.generic.NumberTool
* @see ServletVelocityView#setNumberToolAttribute
*/
@Override
public void setNumberToolAttribute(String numberToolAttribute) {
this.numberToolAttribute = numberToolAttribute;
}
public void setToolboxFactory(ToolboxFactory toolboxFactory) {
this.toolboxFactory = toolboxFactory;
}
@Override
protected void initApplicationContext() {
super.initApplicationContext();
if (this.toolboxFactory != null) {
if (ServletVelocityView.class == getViewClass()) {
log.info(
"Using ServletVelocityToolboxView instead of default ServletVelocityView due to specified toolboxFactory");
setViewClass(ServletVelocityToolboxView.class);
} else if (!ServletVelocityToolboxView.class.isAssignableFrom(getViewClass())) {
throw new IllegalArgumentException("Given view class [" + getViewClass().getName()
+ "] is not of type [" + ServletVelocityToolboxView.class.getName()
+ "], which it needs to be in case of a specified toolboxFactory");
}
}
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
ServletVelocityView view = (ServletVelocityView)super.buildView(viewName);
view.setDateToolAttribute(this.dateToolAttribute);
view.setNumberToolAttribute(this.numberToolAttribute);
if (this.toolboxFactory != null) {
((ServletVelocityToolboxView)view).setToolboxFactory(this.toolboxFactory);
}
return view;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy