В версии 3.0.5 я использовал класс, аналогичный тому, который опубликовал serg, с единственной модификацией - использовать обновленные классы, которые Spring не использовал (хвост через VelocityToolboxView -> ServletToolboxManager (используется в перезаписанном нами createVelocityContext)класс, который устарел, поэтому я изменил initVelocityToolContext в ответе серга следующим образом:
private ToolContext getToolContext() throws IllegalStateException, IOException {
if (toolContext == null) {
XmlFactoryConfiguration factoryConfiguration = new XmlFactoryConfiguration("Default Tools");
factoryConfiguration.read(getServletContext().getResourceAsStream(getToolboxConfigLocation()));
ToolboxFactory factory = factoryConfiguration.createFactory();
factory.configure(factoryConfiguration);
toolContext = new ToolContext();
for (String scope : Scope.values()) {
toolContext.addToolbox(factory.createToolbox(scope));
}
}
return toolContext;
}
Мне также пришлось изменить строку, которая создала VelocityContext, чтобы явно вызывать этот метод.
MyБоб теперь выглядит так:
<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver"
p:cache="false"
p:prefix=""
p:suffix=".vm"
p:layoutUrl="templates/main.vm"
p:toolboxConfigLocation="/WEB-INF/velocity/velocity-toolbox.xml"
p:viewClass="path.to.overriden.class.VelocityToolsLayoutView"
/>