3.0.5 では、serg が投稿したものと同様のクラスを使用しました。唯一の変更は、Spring が使用しなかった更新されたクラスを使用することです (VelocityToolboxView -> ServletToolboxManager (オーバーライドした createVelocityContext で使用) を介してテール)は廃止されたので、serg の回答の 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 を作成した行を変更する必要がありました。
私のBeanは次のようになりました:
<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"
/>