將平台升至 Spring 5.3.9+velocity2.3+velocity-tools3.1


在 Spring 5.3.9下升級 Velocity 1.7.x 至 velocity2.3 + velocity-tools3.1 出現的問題,記錄中...

spring-webmvc-4.3.9.RELEASE.jar 中 org/springframework/web/servlet/view/velocity 下
VelocityConfig.java
VelocityConfigurer.java
VelocityLayoutView.java
VelocityLayoutViewResolver.java
VelocityToolboxView.java
VelocityView.java
VelocityViewResolver.java
spring.vm
和 spring-context-support-4.3.9.RELEASE.jar中 org/springframework/ui/velocity下
SpringResourceLoader.java
VelocityEngineFactory.java

修改部分源碼 其中VelocityToolboxView.java類中 第40行,

protected Context createVelocityContext(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response)
    throws Exception
  {
    ChainedContext velocityContext = new ChainedContext(new VelocityContext(model), getVelocityEngine(), request, response, getServletContext());
    if (getToolboxConfigLocation() != null)
    {
      ToolboxManager toolboxManager = ServletToolboxManager.getInstance(
        getServletContext(), getToolboxConfigLocation());
      Map<String, Object> toolboxContext = toolboxManager.getToolbox(velocityContext);
      //將Map<?, ?>替換成了Map<String, Object>,避免類型轉換錯誤
      velocityContext.setToolbox(toolboxContext);
    }
    return velocityContext;
  }

問題1:commons-digester-2.x 升級至 commons-digester3.x

代碼改變

Velocity 1.x -> ViewToolInfo toolinfo = (ViewToolInfo) digester.peek();

Velocity 2.x -> ViewToolInfo toolinfo = (ViewToolInfo) getDigester().peek();

問題2:Apache Commons Lang 2.x 替換為 Apache Commons Lang 3.x

問題3:commons-collections-3.x 替換為 commons-collections-4.x

問題4:$velocityCount失效 替換為 $foreach.count

問題5:configuration key 'resource.loader' has been deprecated in favor of 'resource.loaders'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM